来自View Controller的导航控制器

时间:2014-09-09 12:11:51

标签: ios uiviewcontroller uinavigationcontroller pushviewcontroller presentviewcontroller

我在应用中使用.xib文件。我希望有两个视图控制器正常方式,并从第三个视图控制器,将其嵌入导航视图控制器。这是我想要的例子。

enter image description here

我知道我可以在这样的模态呈现视图控制器中嵌入导航控制器。

let firstVC = FirstViewController(nibName: firstViewController, bundle: nil)
let navController = UINavigationController(rootViewController: firstVC)
presentViewController(navController, animated: true, completion: nil)

但是如果我将它嵌入导航控制器并推送它,应用程序崩溃时会出现错误不支持多次推送相同的视图控制器实例

let firstVC = FirstViewController(nibName: firstViewController, bundle: nil)
let navController = UINavigationController(rootViewController: firstVC)
navController.pushViewController(firstVC, animated: true)

是否可以这样做?如果是这样,有人可以解释一下吗?

谢谢。

注意:请勿将代码段与上图混淆。代码中的firstViewController 不是图中的第一个视图控制器。

2 个答案:

答案 0 :(得分:1)

假设FirstViewcontroller,Secondviewcontroller,Thirdviewcontroller是三个视图控制器。然后从第二个到第三个视图控制器的转换使用下面给出的代码。

Secondviewcontroller *second=[[Secondviewcontroller alloc]init];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController: second];
[self presentViewController:nav animated:NO completion:nil];

答案 1 :(得分:1)

  1. 使用第一个视图控制器作为UINavigationController的根视图控制器
  2. 使用以下方法呈现您的下一个视图控制器
  3.   

    [self.navigationController pushViewController:vc animated:YES];

    1. 在viewWillAppear方法中,如果要隐藏导航栏,请使用
    2.   

      [self.navigationController setNavigationBarHidden:YES animated:animated];

      如果您想要显示导航栏,请使用

        

      [self.navigationController setNavigationBarHidden:NO animated:animated];