后退按钮在show segue上消失

时间:2016-06-06 14:30:16

标签: ios swift uinavigationcontroller segue

我已经阅读了几篇有关此问题的帖子,但我一直在排查故障,之前的solutions似乎没有做到这一点(即解决方案指定嵌入只有导航控制器中的父控制器,我试过)。为了按照以前的帖子解决它,我已经删除了其他视图嵌入到他们自己的导航控制器中 - 但是似乎无法将segue从一个表视图物理地绘制到另一个表视图中。或者它没有显示后退按钮......

基本上,"返回"按钮消失在segue上。在第二个TableViewController和最后一个ViewController(最后)中没有看到它。它显然会重新出现在父母身上。

Storyboard Image

编辑:当我从其他两个视图中删除导航控制器时,那些VC上根本没有导航栏。酒吧完全消失,虽然它出现在第一个。这就是我现在配置的方式。

New Storyboard

1 个答案:

答案 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上看到导航栏

  1. 确保您没有通过第二个VC中的代码隐藏它。
  2. 确保您推送的第二个VC没有展示VC。
  3. 在Interface Builder中选择VC - &gt;属性检查器 - &gt;应该推断出顶部栏。
  4. 如果您使用segue,则segue类型(种类)应为Show