iphone - 通过将导航栏设置为通过推送/弹出隐藏来查看大小

标签 iphone ios cocoa-touch uiviewcontroller uinavigationcontroller

所以在我将一个新的 viewController 推到某个 View 的堆栈上之前,我将 navigationBar 设置为隐藏我注意到它在下一个屏幕被推送和幻灯片动画发生之前消失了(因为我需要一个顶部的 UIToolbar) .

所以问题 #1:有没有办法推送一个新的 View Controller 并将导航栏设置为隐藏,并且在新的 View Controller 出现在屏幕上之前不显示隐藏动画。导航栏隐藏然后推送新 View Controller 看起来很有趣。

一旦出现新的 View Controller ,当我将其弹出时,我将导航栏设置回去

[self.navigationController.navigationBar  setHidden:NO];

但是当它被弹出时,导航栏就不再回来了。是不是因为这个 navigationBar 是针对当前的 navigationController 而不是 pop 之后呈现的新的 navigationController? (问题 #2)

问题 3:意识到它没有显示我的导航栏,在弹出后显示的 viewController 中,在它的 viewDidAppear 中,我添加了

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.navigationController.navigationBar setHidden:NO];
}

它显示了导航栏,但 View 大小不正确,因为一旦导航栏被隐藏, View 的其余部分就占据了空白空间,然后导航栏位于内容之上。我能做些什么吗?还是我用 push 和 pop 错误地处理了它?(问题 3)。

谢谢!

最佳答案

我遇到了完全相同的问题(只是反过来:我从隐藏的 NavigationBar 开始,然后将 View 推到我希望 NavigationBar 可见的地方),实际上有一个非常简单的修复方法。

只需替换您的电话:

[self.navigationController.navigationBar setHidden:NO];

[[self navigationController] setNavigationBarHidden:NO animated:YES];            

在我的代码中,我在每个 View Controller 的 - (void)viewWillAppear:(BOOL)animated 方法中调用这些语句。

我只是按照您使用的顺序(可见,然后隐藏)尝试了这个解决方案,它似乎也能正常工作。

关于iphone - 通过将导航栏设置为通过推送/弹出隐藏来查看大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016275/

相关文章:

iphone - 使用 UIScrollView 实现垂直滚动的正确方法

iphone - 在 Restkit 中处理 NSAsserts 抛出

ios - 如何使用 GCDAsyncUdpSocket 在局域网中广播?

iphone - 如何使用注释降低 MKMapview 的缩放级别?

ios - 通过 React Native Firebase 存在 AdMob 时出现 “Linker command” 错误

ios - Swift - 图像隐藏

iphone - 在设备上强制使用虚假位置?

ios - 如何避免在 swift 上打开 View Controller ?

ios - UITextField 和左 View 中的点击手势

ios - didReceiveMemoryWarning 未被调用——UITabBarViewController 应用程序