因此,iOS 7引入了这个新特性,您可以通过在左侧边缘平移来弹出一个视图控制器。这是我的问题:我有两个视图控制器,A和B,它们由一个推子连接。这两个控制器都有导航条(通过在导航控制器中嵌入A)。当用户进入B的场景时,B中的导航条将被隐藏,并且当用户点击场景时可以显示。如果用户平移在B的左侧边缘,而导航条被隐藏,则A中的导航条也将被隐藏,这意味着用户无法从A返回更远的地方,那么是否有一种方法可以强制执行A来始终显示导航条,而不管B是否隐藏了该条?还是有一种简单的方法来阻止pan手势的产生?我读过this post,它提出了一种防止平底锅的方法,但我无法在故事板中找到这个属性。
编辑:,所以我禁用了交互式pop手势识别器,但这只解决了问题的一半。另一半是,当导航条消失时,如果我单击子视图控制器导航栏上的后退按钮,就会导航回没有导航条的父视图控制器。我试着在viewWillAppear中调用viewWillAppear,然后调用viewDidLoad,但是它不起作用。这是SDK中的某种bug,还是我遗漏了什么?
下面是在子视图控制器中隐藏导航条的代码
- (void)hideNavigationBar
{
if (self.navigationBarHidden == NO)
{
[UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{
self.navigationController.navigationBar.alpha = 0.0;
self.previewCollectionView.alpha = 0.0;
} completion:^(BOOL finished) {
self.navigationBarHidden = YES;
}];
}
}发布于 2014-04-06 16:36:26
是的,您可以在A viewController的-viewWillAppear方法中强制执行导航条的外观。
此外,由于无法在情节提要中找到interactivePopGestureRecognizer属性,所以可以在Also的-viewDidLoad方法中使用这一行:
self.navigationController.interactivePopGestureRecognizer.enabled = NO;编辑:
在viewWillAppear method中,您必须调用:
[self.navigationController setNavigationBarHidden:NO];
self.navigationController.navigationBar.alpha = 1.0;发布于 2014-04-09 17:05:27
我发现你的情况有几个问题:
-viewWillAppear触发A之前及时完成。您可能不希望禁用该手势(这样用户就可以直观地返回),并在视图控制器A的-viewWillAppear中重新打开导航条,以涵盖在B中关闭它的情况:
if (self.navigationBarHidden == NO)
{
self.navigationController.navigationBar.alpha = 1.0;
self.previewCollectionView.alpha = 1.0;
self.navigationBarHidden = NO;
}https://stackoverflow.com/questions/22896816
复制相似问题