首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS -弹出一个视图控制器,在左侧边缘平移,导航栏消失。

iOS -弹出一个视图控制器,在左侧边缘平移,导航栏消失。
EN

Stack Overflow用户
提问于 2014-04-06 16:32:44
回答 2查看 2.6K关注 0票数 1

因此,iOS 7引入了这个新特性,您可以通过在左侧边缘平移来弹出一个视图控制器。这是我的问题:我有两个视图控制器,A和B,它们由一个推子连接。这两个控制器都有导航条(通过在导航控制器中嵌入A)。当用户进入B的场景时,B中的导航条将被隐藏,并且当用户点击场景时可以显示。如果用户平移在B的左侧边缘,而导航条被隐藏,则A中的导航条也将被隐藏,这意味着用户无法从A返回更远的地方,那么是否有一种方法可以强制执行A来始终显示导航条,而不管B是否隐藏了该条?还是有一种简单的方法来阻止pan手势的产生?我读过this post,它提出了一种防止平底锅的方法,但我无法在故事板中找到这个属性。

编辑:,所以我禁用了交互式pop手势识别器,但这只解决了问题的一半。另一半是,当导航条消失时,如果我单击子视图控制器导航栏上的后退按钮,就会导航回没有导航条的父视图控制器。我试着在viewWillAppear中调用viewWillAppear,然后调用viewDidLoad,但是它不起作用。这是SDK中的某种bug,还是我遗漏了什么?

下面是在子视图控制器中隐藏导航条的代码

代码语言:javascript
运行
复制
- (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;
        }];
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-06 16:36:26

是的,您可以在A viewController的-viewWillAppear方法中强制执行导航条的外观。

此外,由于无法在情节提要中找到interactivePopGestureRecognizer属性,所以可以在Also的-viewDidLoad方法中使用这一行:

代码语言:javascript
运行
复制
self.navigationController.interactivePopGestureRecognizer.enabled = NO;

编辑:

viewWillAppear method中,您必须调用:

代码语言:javascript
运行
复制
[self.navigationController setNavigationBarHidden:NO];
self.navigationController.navigationBar.alpha = 1.0;
票数 1
EN

Stack Overflow用户

发布于 2014-04-09 17:05:27

我发现你的情况有几个问题:

  1. 您禁用交互式pop手势,并将导航条隐藏在视图控制器B中。用户如何凭直觉返回?
  2. 在B中隐藏肚脐的动画可能会导致问题。如果超过一秒的时间,动画可能无法在你点击“后退”按钮和-viewWillAppear触发A之前及时完成。
  3. B中的代码隐藏导航控制器的导航栏。持有视图控制器A的导航控制器与持有视图控制器B的实例相同。如果在B加载时隐藏导航条,则返回到A(不确定没有后退按钮或边缘pan手势是如何做到的),它仍应隐藏。

您可能不希望禁用该手势(这样用户就可以直观地返回),并在视图控制器A的-viewWillAppear中重新打开导航条,以涵盖在B中关闭它的情况:

代码语言:javascript
运行
复制
if (self.navigationBarHidden == NO)
{
    self.navigationController.navigationBar.alpha = 1.0;
    self.previewCollectionView.alpha = 1.0;
    self.navigationBarHidden = NO;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22896816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档