【发布时间】:2015-10-30 17:48:06
【问题描述】:
我有一个父 TableViewController 和一个子 ViewController 都在导航控制器的上下文中。我想要发生的是表格视图控制器从不显示导航栏,而视图控制器总是显示导航栏。我在每个子类的 viewWillAppear 函数中隐藏和显示导航栏,如下所示:
表格视图控制器:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true);
navigationController?.navigationBar.hidden = true
UIApplication.sharedApplication().statusBarHidden=true
}
视图控制器:
override func viewWillAppear(animated: Bool) {
self.navigationController?.navigationBarHidden = false
}
这适用于第一次导航。当我启动应用程序时,父表视图控制器隐藏导航栏,当我选择第一个单元格时,子视图控制器尽职尽责地显示导航栏。但是,当我触摸导航栏上的“返回”,然后再次选择单元格时,视图控制器不再显示导航栏。
有没有更好的方法来做到这一点?
更新 - 根据要求附上 XIB 和 Storyboard 的屏幕截图。请注意,父 TableViewController 没有 XIB。我不相信这些截图会提供很多洞察力。尤其是故事板。不幸的是,Xcode 只有 2 个缩放级别: 1. 太放大没用 2. 缩小到无用 尽管如此,这里有它们:
【问题讨论】:
-
你在使用 Storyboard 吗?
-
为什么每次在视图中都会出现隐藏状态栏?还实现 super.viewWillAppear(true);在第二个控制器中。
-
如果不希望出现导航栏,为什么不以模态方式呈现TableViewController?
-
@DejanSkledar 实际上,不,现在我想起来了。我在这个项目的某些方面使用故事板,但不是全部。 tableviewcontrollers都是程序化的,view controller有一个xib,但是没有附加到storyboard...
-
@Gagan_iOS 我最终这样做的原因是 viewWillAppear 是因为当我在 viewDidLoad 中设置它时,我也有一个非常奇怪的效果:TVC 会加载隐藏导航栏(预期)而 VC 会然后加载显示导航栏(预期)但是当我点击返回时,TVC 将显示导航栏!将导航栏的隐藏移动到 viewWillAppear 对 TVC 有效。不知道为什么它不适用于子 VC。
标签: ios swift uitableview uinavigationcontroller