iPhone добавляет UITabBar в TableView / NavigationController

Я нашел много информации по этой теме, но еще не понял, как это делается на самом деле.

Я хочу добавить UITabBar в приложении iPhone в приложение, уже имеющее UIWindow / UINavigation Controller в качестве окна по умолчанию.

т.е. добавить панель вкладок в типичное приложение NavControl с RootViewController.xib, MainWindow.xib, AddView.xib, DetailView.xib, EditView.xib и т. д. Что мне редактировать?

Было бы признательно, если бы кто-нибудь мог указать мне на наглядный пример. Screencast обязательно получит бонусные баллы, этот вопрос так часто задают в Интернете, и я не могу найти простого ответа. См .: Как добавить панель вкладок в приложение iPhone на основе NavigationController

Образцы

например. appdelegate выглядит так:

@interface SQLAppDelegate : NSObject <UIApplicationDelegate> {

    UIWindow *window;
    UINavigationController *navigationController;

}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

person oberbaum    schedule 04.01.2010    source источник


Ответы (2)


Мне неясно, хотите ли вы добавить панель вкладок «внутри» одного из представлений контроллера навигации или вы хотите взять представление контроллера навигации и сделать его только одной из вкладок в контроллере панели вкладок с несколькими вкладками.

Я думаю, что люди сочтут панель вкладок внутри подпредставления навигационного контроллера немного странной, поэтому я предполагаю, что вы имеете в виду, что хотите поместить навигационный контроллер в подпредставление контроллера панели вкладок, как у меня на изображении. ниже:

альтернативный текст http://img138.imageshack.us/img138/7671/screenshotve.png < / а>

«Logging View Controller» загружается из файла NIB, который содержит представление и некоторые другие вещи.

Если вам нужно что-то вроде представления с вкладками внутри одного из подпредставлений контроллера навигации, я бы использовал сегментированный элемент управления для переключения представлений внутри этого конкретного подпредставления или чего-то в этом роде.

Если вы пытаетесь сделать то, что я сделал в окне выше, просто перетащите новый контроллер панели вкладок в свой основной файл пера, а затем перетащите существующий контроллер навигации на значок контроллера панели вкладок. Это сделает навигационный контроллер одной из вкладок внутри контроллера вкладок.

person Nimrod    schedule 05.01.2010

Хорошо, я не спал большую часть ночи и работал над этим. Я основывал это на вышеизложенном и на примере кода SDK для рецептов Apple.

Тот снимок экрана, который вы опубликовали, был ключевым. Вот В общем, что я сделал:

* Запустил мой проект, заставил его работать так, как я хотел, с UITableViews * Создать TabBar в IB * Скопировал точно такой же макет для приложения в Interface Builder, Connections и т. Д. * Скопировал код, относящийся к дисплеям

(Скриншот соединений) http://img511.imageshack.us/img511/6267/screenshot20100105at121.png

Код ключа:

AppDelegate.h:

@interface AppDelegate : NSObject <UIApplicationDelegate> {

    UIWindow *window;
    UINavigationController *navigationController;

    UITabBarController *tabBarController;
    RootViewController *rootController;
}

@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@property (nonatomic, retain) IBOutlet RootViewController *rootController;

AppDelegate.m:

- (void)applicationDidFinishLaunching:(UIApplication *)application {

    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];
}

Это только образцы того, что я изменил. Ничего кроме AppDelegate не было затронуто, кроме конструктора интерфейсов. Я продолжал получать белое пустое окно, загружающееся каждый раз, пока я не изменил

[window addSubview:[navigationController view]];

to

[window addSubview:tabBarController.view];

Это ключ.

Надеюсь, это поможет и кому-то другому, я рад разобраться

С уважением, @norskben

person oberbaum    schedule 05.01.2010
comment
Просто хотел поблагодарить вас за этот пост и за его продолжение. Очень полезно! - person cdnicoll; 27.07.2010