从视图控制器创建导航控制器

4
我在应用程序中使用.xib文件。我想以普通方式拥有两个视图控制器,并从第三个视图控制器中将其嵌入导航视图控制器中。这是我想要的示例图片。
我知道我可以像这样在模态呈现的视图控制器中嵌入导航控制器。请参考以下代码:
let firstVC = FirstViewController(nibName: firstViewController, bundle: nil)
let navController = UINavigationController(rootViewController: firstVC)
presentViewController(navController, animated: true, completion: nil)

但是如果我将其嵌入到导航控制器中并进行推送,应用程序会崩溃,并显示错误信息Pushing the same view controller instance more than once is not supported

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

这个问题有可能是可行的,如果可以的话,可以有人解释一下如何实现吗?

谢谢。

注意:不要将代码片段与上面的图表混淆。在代码中的firstViewController不是图表中的第一个视图控制器。


您是将上图中的firstViewController指作第一张图片吗?如果是的话,您是如何通过presenting从第一张图片导航到第二张的呢? - uiroshan
哦,不好意思,这段代码片段与上面的图表无关。我忘记提到了。 - Isuru
@Isuru 你是如何解决你的问题的? - Shivam Pokhriyal
2个回答

1
假设FirstViewcontroller,Secondviewcontroller和Thirdviewcontroller是三个视图控制器。然后从第二个到第三个视图控制器的转换使用下面给出的代码。
Secondviewcontroller *second=[[Secondviewcontroller alloc]init];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController: second];
[self presentViewController:nav animated:NO completion:nil];

嗨,这是我已经执行模态呈现的方式。我所需要的是推送视图控制器,而不是以模态方式呈现它。 - Isuru
你的意思是将其推到第三个视图控制器吗? - Ardra Thambi
没错。将其推到第三个视图控制器并嵌入导航控制器中。 - Isuru
如果您想从第二个视图控制器进行推送,那么第二个视图控制器应该有一个导航控制器。否则,您将无法从该视图控制器进行推送。 - Ardra Thambi

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

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

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接