Iphone应用程序编程 - 导航到其他视图控制器和转义导航控制器

时间:2012-12-02 04:14:03

标签: objective-c ios cocoa-touch ios5 ios4

我的标签控制器有3个标签,里面有导航控制器:

// account view
UINavigationController * firstNavController = [[UINavigationController alloc]initWithRootViewController: viewController1];
viewController2.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2];

// book view
UINavigationController * secondNavController = [[UINavigationController alloc]initWithRootViewController: viewController2];
viewController3.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:3];

// invite view
UINavigationController * thirdNavController = [[UINavigationController alloc]initWithRootViewController: viewController3];


CATransition *transition = [CATransition animation];
transition.duration = 0.7f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;

[firstNavController.view.layer addAnimation: transition forKey:nil];
[secondNavController.view.layer addAnimation: transition forKey:nil];
[thirdNavController.view.layer addAnimation: transition forKey:nil];

_tabBarController.viewControllers = [[NSArray alloc] initWithObjects: firstNavController, secondNavController, thirdNavController,  nil];

我有一个带右键的导航栏,可让人们转到我的帐户页面。如何不使用导航控制器?例如,如果人们点击标签栏按钮1,他们会得到一个导航控制器(带有他们可以选择的服务列表)。如果他们单击右上角的“我的帐户”按钮,它应该打开一个新的导航控制器,底部有标签栏,这样他们就无法点击“我的帐户”页面上的后退按钮(因为这是此新导航中的根控制器)控制器。

我该怎么做?

基本上,我想从另一个视图控制器(控制器2)打开一个新的视图控制器(控制器1 - 我的帐户),而不将新的视图控制器推入控制器2的导航控制器。控制器1应该有标签栏底部但没有后退按钮。

2 个答案:

答案 0 :(得分:1)

从控制器2,您可以使用它切换到第一个控制器(我假设您的意思是第一个选项卡上的控制器):

self.tabBarController.selectedIndex = 0;

我认为您可以使用self.navigationBarHidden = YES隐藏第一个控制器的viewDidAppear方法中的导航栏

答案 1 :(得分:0)

不要推送LoginViewController,而是尝试使用presentModalViewController

在导航rightBarButton操作中

[self presentModalViewController:loginViewController animated:YES];