[英]iphone push view controller inside navbar inside tabbar
我有一个带有带有导航栏的tabBar的应用,
tabBar正在显示并正常工作,但是当我想转到其中一个标签内的另一页时,它不会加载新页面,
这是我的应用程序代表
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
StartViewController *startViewControllerView = [[[StartViewController alloc] init] autorelease]; //ojo recomendado por apple!!!
PhotosViewController* PhotosViewController_ = [[[PhotosViewController alloc] init] autorelease];
VideosViewController* VideosViewController_ = [[[VideosViewController alloc] init] autorelease];
SocialViewController* SocialViewController_ = [[[SocialViewController alloc] init] autorelease];
NSArray* controllers = [NSArray arrayWithObjects: startViewControllerView, VideosViewController_, PhotosViewController_, SocialViewController_, nil];
self.tabBarController.viewControllers = controllers;
self.pagesNavigation = [[[UINavigationController alloc] initWithRootViewController:startViewControllerView] autorelease];
self.pagesNavigation.navigationBarHidden = NO;
[self tabBarConfig];
[self.tabBarController setViewControllers:controllers animated:YES];
[self.window addSubview:self.pagesNavigation.view];
self.window.rootViewController = self.tabBarController;
//self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
[self.window makeKeyAndVisible];
return YES;
}
它显示选项卡好,
但在其中一页中,我用
[self.navigationController pushViewController:bigPhotoView animated:YES];
但这不起作用。
那么如何从我的标签页加载新视图呢?
UINavigationController
是视图控制器的堆栈。 每个视图控制器都有一个名为navigationController
的属性,该属性表示它所属的UINavigationController
。 因此,如果视图控制器不属于UINavigationController
(换句话说,如果堆栈中不存在视图控制器),则其navigationController
属性将为nil。
如果要使用一个视图控制器,可以从中推入新的视图控制器和弹出视图控制器,则需要首先创建一个堆栈(UINavigationController),然后将视图控制器推入该堆栈中。 现在,由于存在堆栈,我们可以继续在该堆栈中推送新的视图控制器。
您的bigPhotoView没有被推送,可能是因为当前视图控制器(您正在尝试从中推送bigPhotoView)不存在UINavigationController。 可以如下验证:
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;
}
这是UINavigationController的官方Apple文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.