ios - 隐藏导航栏,具体取决于 View Controller 的显示方式

标签 ios cocoa-touch uinavigationcontroller uitabbarcontroller

我有一个标签栏,其中一个标签中有一个导航 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 从导航堆栈中pushedpopped,那么它将作为 YES

虽然这看起来像 hack,但它是正确的方法:您不需要弄清楚调用者是谁,相反,关注这样一个事实:如果您的 View Controller 将显示为动画,您有时间做你自己的动画,如果没有,搞砸它,立即显示(或者在这种情况下,隐藏)所有内容。

关于ios - 隐藏导航栏,具体取决于 View Controller 的显示方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7107503/

相关文章:

ios - 使用 IOS 检索 Google 书签的最佳方式

ios - 如何使用 UIImagePickerController 设置拍摄照片的位置?

cocoa-touch - 在 iOS 3.0 中,NSDateFormatter 对于 @"dd-MM-yy"返回 nil

iphone - 每天下午 5 点重复 UILocalNotification

iphone - UIViewController 从 View 堆栈中弹出,NSURLConnection 使应用程序崩溃

iphone - 向导航栏添加标题

ios - 如何以编程方式快速实例化带有嵌入式导航 Controller 的 View Controller ?

ios - 发送本地sqlite文件到服务器

ios - 使用数组变量 SWIFT 检查文本框

iphone - 如何制作以编程方式使用 UISplitViewController 和 UINavigationController 的通用 iPhone/iPad 应用程序?