【发布时间】:2014-04-06 16:32:44
【问题描述】:
所以 iOS 7 引入了这个新功能,您可以通过在左边缘平移来弹出视图控制器。这是我的问题:我有两个视图控制器 A 和 B,它们通过 push segue 连接。两个控制器都有导航栏(通过在导航控制器中嵌入 A)。 B 中的导航栏在用户进入 B 的场景后会被隐藏,如果用户在场景中点击则可以显示。如果用户在导航栏隐藏的情况下在B的左边缘平移,那么A中的导航栏也会被隐藏,这意味着用户无法从A返回更远的地方。那么有没有办法强制 A 始终显示导航栏,无论 B 是否隐藏了导航栏?或者有没有一种简单的方法可以防止平移手势生效?我阅读了this post,它提出了一种防止泛音的方法,但我无法在情节提要中找到该属性。
编辑: 所以我禁用了交互式弹出手势识别器,但这只解决了一半的问题。另一半是如果我在导航栏消失时单击子视图控制器导航栏上的后退按钮,我将导航回没有导航栏的父视图控制器。我尝试在viewWillAppear 中调用[self.navigationController setNavigationBarHidden:NO],然后在viewDidLoad 中调用,但它不起作用。这是 SDK 中的某种错误还是我遗漏了什么?
这是在子视图控制器中隐藏导航栏的代码
- (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;
}];
}
}
【问题讨论】:
-
你能把你用来隐藏导航栏的代码贴出来吗?
-
再次,请发布您用于隐藏导航栏的代码。
-
刚刚发布。请看一看。
标签: ios objective-c