所以在我将某个新的viewController推送到某个视图的堆栈之前,我将navigationBar设置为隐藏我注意到它会在下一个屏幕被推动并且幻灯片动画发生之前消失(因为我需要顶部的UIToolbar) 。
问题#1:有没有办法推动一个新的视图控制器并将导航栏设置为隐藏,而不是在新的视图控制器在屏幕上之前获取隐藏动画。导航栏隐藏然后按下新的视图控制器看起来很有趣。
一旦出现新的视图控制器,当我将其弹出时,我将导航栏设置回
[self.navigationController.navigationBar setHidden:NO];
但是当它弹出时,导航栏不再返回了。是因为这个navigationBar是针对当前的navigationController而不是流行后呈现的新导航栏吗? (问题#2)
问题3:实现它没有显示我的navigationBar,在popCon之后呈现的viewController中,在viewDidAppear中,我添加了
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.navigationController.navigationBar setHidden:NO];
}
显示了navigationBar,但视图大小不正确,因为一旦导航栏被隐藏,视图的其余部分占用空白区域,然后navigationBar位于内容之上。我能做些什么吗?或者我是否通过推送和弹出错误地接近它?(问题#3)。
谢谢!
答案 0 :(得分:1)
我遇到了同样的问题(只是反过来:我是从一个被隐藏的NavigationBar开始并推送一个我希望NavigationBar可见的视图),而且实际上是一个非常简单的修复。
只需更换您的电话:
[self.navigationController.navigationBar setHidden:NO];
与
[[self navigationController] setNavigationBarHidden:NO animated:YES];
在我的代码中,我在每个相应View Controller的- (void)viewWillAppear:(BOOL)animated
方法中调用这些语句。
我刚刚按照您使用的顺序尝试此解决方案(可见,然后隐藏),它似乎也可以正常工作。
答案 1 :(得分:0)
有趣的问题。您可以尝试更改hidden
和viewWillAppear
中的viewWillDisappear
属性,但似乎可能无法提供所需的结果。
你能以模态方式呈现视图控制器而不是让导航栏消失吗?如果它是堆栈中的最后一个视图控制器,那么这是可能的。用户看到视图控制器的呈现方式也可能更有意义。这可能向用户指示不再使用后退按钮导航远离此视图控制器。它可能比导航栏消失更合理。
如果您仍然希望视图控制器从右侧滑入,我不认为可以使用模态视图控制器完成。但是,您可以通过设置填充屏幕的视图来实现。 (您只需添加一个具有origin.x等于屏幕宽度的帧的视图。然后,在动画中,您将origin.x更改为0.0。如果您需要更多详细信息,请告诉我。)
但是,我建议以与导航控制器通常呈现视图的方式不同的方式呈现视图控制器。因为,基本上,您不再让用户离开此视图,因为他/她通常会从导航控制器中导航。 (所以,我对问题#3的回答是'是'。)