我有一个标签栏,其中一个标签中有一个导航 Controller 。目前,导航 Controller 的 Root View 没有显示导航栏,并通过
很好地动画到 subview 中- (void)viewDidLoad {
...
[self.navigationController setNavigationBarHidden:YES animated:NO];
...
}
和
- (void)viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
当然,更改选项卡会启动 viewWillAppear
函数,因此当我返回 Root View 时,导航栏会滑开,而不是不存在。
有没有一种方法可以隐藏 Root View 上的导航栏而不对其进行动画处理,除非出现在导航堆栈的 subview 中?
最佳答案
viewWillAppear:animated
上的(BOOL)animated
参数。更改 Tab 时,它将显示为 NO
,因为动画是即时的。另一方面,如果使用 animated:YES
从导航堆栈中pushed 或 popped,那么它将作为 YES
。
虽然这看起来像 hack,但它是正确的方法:您不需要弄清楚调用者是谁,相反,关注这样一个事实:如果您的 View Controller 将显示为动画,您有时间做你自己的动画,如果没有,搞砸它,立即显示(或者在这种情况下,隐藏)所有内容。
关于ios - 隐藏导航栏,具体取决于 View Controller 的显示方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7107503/