UINavigationController
- это стек контроллеров представления. Каждый контроллер представления имеет свойство, называемое navigationController
, которое представляет UINavigationController
, к которому он принадлежит. Таким образом, если контроллер представления не принадлежит UINavigationController
(другими словами, если контроллер представления отсутствует в стеке), его свойство navigationController
будет иметь значение nil.
Если вы хотите иметь контроллер представления, из которого вы могли бы выдвигать новые контроллеры представления и контроллеры всплывающего представления, вам сначала нужно создать стек (UINavigationController), поместите контроллер представления в этот стек. Теперь, так как стек существует, мы можем продолжать помещать новые контроллеры представления в этот стек.
Ваш bigPhotoView не выдвигается, вероятно, потому, что для текущего контроллера представления не существует UINavigationController (из которого вы пытаетесь выдвинуть bigPhotoView). Это можно проверить следующим образом:
if (self.navigationController != nil) {
[self.navigationController pushViewController:bigPhotoView animated:YES];
}
В приведенном выше случае вы не можете вводить оператор if.
Я кратко подготовил вашу функцию. Это выглядит примерно так.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Create Start view controller.
StartViewController *startController = [[StartViewController alloc] init];
UINavigationController *startViewNavigationController = [[UINavigationController alloc] initWithRootViewController:startController];
[startController release];
// Similarly create for photos, videos and social...
// Create an array of view controllers.
NSArray* controllers = [NSArray arrayWithObjects:startViewNavigationController, photosViewNavigationController, videosViewNavigationController, socialViewNavigationController, nil];
// Create our tab bar controller.
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
// Set the view controllers of the tab bar controller.
self.tabBarController.viewControllers = controllers;
// Release the startViewNavigationController, photosViewNavigationController, videosViewNavigationController, socialViewNavigationController...
// I don't know what this does.
[self tabBarConfig];
// Add the tab bar controller to the window.
[self.window addSubview:self.tabBarController.view];
[self.window makeKeyAndVisible];
return YES;
}
Здесь - официальная документация Apple для UINavigationController