导航控制器。在多个视图控制器之间导航

时间:2014-08-16 19:25:25

标签: objective-c ios7 model-view-controller uiviewcontroller storyboard

![这是我的视图控制器连接外观] [1]

http://i58.tinypic.com/2mepfv4.png

![我必须通过编程方式从视图控制器A转到VC-B,因为它应该满足基于设备ID的登录认证。让我清楚地解释一下。当用户安装我的应用程序时,他应该设置他的电子邮件并验证。验证后他应该转移到VC-B。移动VC-B后,Viewcontroller-A再次打开应用程序时不应再打开。类似于杀死视图控制器-A,并在打开应用程序时加载VC-B。

问题1-如何完全杀死View controller-A。

第二件事我不想在View控制器-A上显示导航栏,但是在View VC-B,VC-C和VC-D上等等。我想显示导航栏,因为用户应该能够来回移动。这就是我再次在VC-B之前添加导航控制器的原因。

如果我在VC-B上无法显示导航栏,直到我在视图控制器A之前启用导航控制器上的显示导航栏。

问题2 - 如何在VC-B上启用导航栏,但不在Viewcontroller-A上启用导航栏。

] [1]  这是代码我如何从View控制器A移动到VC-B。

    if (alertView.tag == 99) {
    if(buttonIndex == 0){
    VC-B *vcb =
    [self.storyboard instantiateViewControllerWithIdentifier:@"VC-B"];
      [self.navigationController pushViewController:vcb animated:YES];

} } 帮我指出正确的方向。

1 个答案:

答案 0 :(得分:0)

你不一定需要杀死A视图控制器,我认为这不是一个好主意。

您可以通过在成功验证用户后在NSUserDefaults中设置信息来解决此问题。然后导航到B视图控制器。

在方法中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

始终检查NSUserDefaults中是否设置了验证标志,如果是,则将导航控制器的rootViewController设置为B视图控制器,否则设置为A视图控制器。

要隐藏/取消隐藏导航栏,您可以使用以下代码从任何视图控制器(假设它们属于导航控制器)执行此操作:

self.navigationController.navigationBar.hidden = YES; // or NO

此代码可以在视图控制器类中编写,在viewDidLoad,viewWillAppear:,viewDidAppear:中,或者您需要的任何位置。

如果你想要一个漂亮的动画来隐藏/取消隐藏,还有一些方法。