objective-c - 导航栏设置为不可见,但单击后退按钮时会出现

标签 objective-c ios uinavigationcontroller uinavigationbar

如标题所示, Root View 是我的导航 Controller ,它被设置为不可见,即在启动时。但是,如果我将 View 插入堆栈然后弹出它,则会出现导航栏。

关于为什么以及如何补救这种情况有任何线索吗?

最佳答案

每次 Controller 的 View 在屏幕上出现(或消失)时,您都需要隐藏它。这是必要的,因为栏维持不同的推/弹出操作之间的状态。例如,如果您将其设置为隐藏在第一个 Controller 中的 viewDidLoad 中,而在第二个 Controller 中将其设置为可见,则当您弹出第二个 Controller 时,栏将保持您设置的最后状态。

例如覆盖 viewWillAppearviewWillDisappear 方法并隐藏/取消隐藏那里的栏。

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];    
}    

- (void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];    
}

关于objective-c - 导航栏设置为不可见,但单击后退按钮时会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812165/

相关文章:

iphone - 更改导航栏的字体

objective-c - 已弃用的 userInfo 字典键的可移植代码 (Cocoa)

iphone - 如何在 Objective C 中使用 NSData 创建 json 对象?

ios - 以编程方式截取屏幕截图时 View 中的 UIImage 未保存 - Objective-C

ios - 使用按钮切换 ViewController 不会在第二个 ViewController 中显示导航栏

ios - 谷歌使用google sdk登录ios?

适用于hidesBottomBarWhenPushed的iOS自定义动画

ios - 在 UISplitViewController 中,无法使 showDetailViewController :sender: push onto detail navigationController

ios - 如何获取 XML 元素并存储它? objective-c

objective-c - 如何以编程方式触发 Finder 的移动文件对话框?