Правильный способ использования UINavigationController
заключается в push
просмотре контроллеров на нем. Таким образом, они будут сложены, и на панели навигации появится кнопка «Назад», когда это имеет место (то есть, когда вы действительно можете вернуться к предыдущему контроллеру). Вы управляете меткой, которая появляется в кнопке «назад», определяя title
контроллеров, которые вы нажимаете.
Техника, показанная в другом ответе (с явной настройкой кнопки), полезна для определения правой кнопки, если она вам когда-либо понадобится.
Вы можете попробовать с этим кодом:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
UINavigationController* navigation = [[UINavigationController alloc] init];
[navigation pushViewController:overviewViewController animated:NO];
[overviewViewController release];
[window addSubview:[navigation view]];
[self.window makeKeyAndVisible];
return YES;
}
Вместо того, чтобы делать:
UINavigationController* navigation = [[UINavigationController alloc] init];
[navigation pushViewController:overviewViewController animated:NO];
Вы также можете использовать initWithRootController
, но для отображения общего случая, когда вы нажимаете контроллер вида, я предпочел этот.
Обратите внимание, что, поскольку вы нажимаете только корневой контроллер, в данный момент вы не должны видеть кнопку возврата, но если вы нажмете второй контроллер представления, то он появится.
РЕДАКТИРОВАТЬ: Я посмотрел на ваш проект. Краткое описание того, что вы должны попробовать и сделать:
объектов, которые вам нужны в вашей NIB: владелец файла (UIApplication), первый ответчик, делегат приложения FBFun (iVkAppDelegate), окно (UIWindow); убрать остальное;
Выход делегата владельца файла - FBFun App Delegate;
FBFun App Делегат окно выхода является Window.
При такой простой настройке (более или менее той, что у вас есть) используйте этот код:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationController* navigation = [[UINavigationController alloc] init];
//-- MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
iVkViewController *overviewViewController = [[iVkViewController alloc] init];
overviewViewController.title = @"First";
[navigation pushViewController:overviewViewController animated:NO];
iVkViewController *overviewViewController2 = [[iVkViewController alloc] init];
overviewViewController2.title = @"Second";
[navigation pushViewController:overviewViewController2 animated:NO];
[overviewViewController release];
[window addSubview:[navigation view]];
[self.window makeKeyAndVisible];
return YES;
}
В приведенном выше коде, как вы заметили, я дважды создал экземпляр вашего iVkViewController
только для того, чтобы установить второй контроллер на навигатор.
Пожалуйста, удалите существующее приложение из симулятора и запустите его, чтобы убедиться, что панель навигации создана правильно, и вы можете вернуться со второго контроллера к первому.
Я удалил использование MainPageDialog, потому что у пера MainPage много проблем.
Но я надеюсь, что этого скелета достаточно, чтобы вы продолжили свое развитие.