我已经阅读了几篇有关此问题的帖子,但我一直在排查故障,之前的solutions似乎没有做到这一点(即解决方案指定嵌入只有导航控制器中的父控制器,我试过)。为了按照以前的帖子解决它,我已经删除了其他视图嵌入到他们自己的导航控制器中 - 但是似乎无法将segue从一个表视图物理地绘制到另一个表视图中。或者它没有显示后退按钮......
基本上,"返回"按钮消失在segue上。在第二个TableViewController和最后一个ViewController(最后)中没有看到它。它显然会重新出现在父母身上。
编辑:当我从其他两个视图中删除导航控制器时,那些VC上根本没有导航栏。酒吧完全消失,虽然它出现在第一个。这就是我现在配置的方式。
答案 0 :(得分:1)
导航控制器遵循Stack theory。当您在堆栈中推送某些内容时,它会将顶部索引计数增加1并在堆栈中弹出一些内容,它会将顶部索引计数减少1.
在导航控制器中,第一个控制器将是您的根视图控制器。现在,当您在导航控制器中推送新的视图控制器时,您的最高索引计数将为2.但是您没有在同一个导航控制器(比如说Stack1)中推动viewController,而是创建新的导航控制器(比如说Stack2)。
所以在这里你将新控制器设置为新的导航控制器(Stack2)的根视图控制器,并且没有要弹出的项目,这就是它没有显示后退按钮的原因。
要解决这些问题,请从第二个和第三个视图控制器中删除导航控制器。
要推送你可以使用segue,或者你可以通过编程方式进行。
<强>夫特强>
let vc2 = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as? ViewController2
self.navigationController?.pushViewController(vc2!, animated: true)
目标C
ViewController2 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"];
[[self navigationController] pushViewController:vc2 animated:YES];
Navigation Controller Guideline
修改强> 如果你无法在第二个VC上看到导航栏
Show
。