Hihi all,
我是iPhone开发中的新手。我已经按照一些教程创建了一个tabbar应用程序。以下是appdelegate实现中的代码:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
UIViewController *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
然后在每个控制器实现中为选项卡设置标题和图像。
我的问题是,例如,在我的viewController1中,我需要导航到viewController3,当我使用presentModalViewController方法推送viewController3时,底部的tabbar将会消失。
虽然我尝试使用app委托引用我的tabBarController,并使用tabBarController.navigationController pushViewController方法,但我的viewController3没有被推送,似乎没有任何反应。
我尝试过几个教程,但是需要将导航控制器拖入MainWindow.xib,在xcode 4中,MainWindow.xib不再存在。如何从代码创建navigationcontroller,以便应用程序可以在不同的视图之间导航而不隐藏tabbar?
非常感谢任何评论!提前谢谢!
:)
答案 0 :(得分:3)
如果要使用导航控制器,则需要创建导航控制器。由于您没有使用XIB,因此您必须手动创建它。
由于您希望在显示viewController3时标签栏保持可见,因此您需要使导航控制器成为标签栏控制器的子项。
UIViewController *viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
UINavigationController *navController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UIViewController *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:
navController1,
viewController2,
nil];
然后,当您想要呈现viewController3时,请执行以下操作:
// in some method of viewController1
[self.navigationController pushViewController:viewController3 animated:YES];
答案 1 :(得分:0)
我不是很确定,但你试过这个???其实我很快就会使用XCode 4,我仍在使用3.2.8版本: -
WebViewController *viewController = [[WebViewController alloc]initWithNibName:@"WebViewController" bundle:nil];
viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:viewController animated:YES];
[viewController release];
在此导航到第3个屏幕时,也会删除标签栏,您必须提供导航栏才能返回。
希望它有所帮助.. :)