使用popToRootViewControllerAnimated:YES时,导航栏的消失速度比视图更快



我在导航vc中嵌入了一个根vc,我使用
[self.navigationController setNavigationBarHidden:YES];
设置了隐藏的导航栏。它工作正常,导航栏消失了。

并按下第二个vc使用
[self.navigationController pushViewController:controller animated:YES];
在第二个vc中设置导航栏显示。一切顺利。

所以当我点击导航栏上的"后退按钮"时,我发现导航栏消失的速度比视图快,尤其是将视图的背景设置为黑色,我可以看到整个视图都是黑色的,就像从来没有任何导航栏一样
我不想要这个,我只希望导航栏一直显示到视图DidDisappear

这是问题的图片

我使用[self.navigationController popViewControllerAnimated:YES];,必须填充动画是YES才能再现这种外观。

对于排序,

  1. 导航vc中的两个vc
  2. 根vc的导航栏被隐藏,第二个vc从根vc推送
  3. 第二个vc显示了导航栏
  4. 使用[self.navigationController popViewControllerAnimated:YES]后退

代码位置在哪里:
ps:无论您如何设置导航栏的隐藏属性,在ViewDidLoad、ViewWillAppear、ViewDidPear或其他位置,它们都是相同的外观。

在根vc的视图中DidLoad
[self.navigationController setNavigationBarHidden:YES];

根vc的didSelectRowAtIndexPath:
[self.navigationController setNavigationBarHidden:NO];

哪里错了

  • RootView和SubView位于同一NavigationController层次结构中。这意味着导航栏既不属于根视图,也不属于子视图
  • 导航栏是全球性的,在这种情况下是独一无二的。仅使用一个导航栏无法处理两个视图的显示

如何解决

  • 在子视图中,我制作了一个新的导航栏来替换现有的导航栏,并将其添加到子视图的子视图中。它运行良好

您只需要将setNavigationBarHidden:Yes的调用从2nd vc的viewWillDisappear:移动到root vc的viewDidAppear:

我从视觉上知道这并不愉快。我只是给了你你说你想要的:"我只是希望导航栏一直显示到视图DidDisappear。"要想获得一个好的过渡,你需要使用自定义过渡。

从ViewDidLoad,移动[self.navigationController setNavigationBarHidden:YES];在ViewDidPear方法中。它会起作用的。

您应该将[self.navigationController setNavigationBarHidden:NO];移动到子VC的viewWillAppear:,并将[self.navigationController setNavigationBarHidden:YES];移动到RootView的viewWillAppear:

相关内容

  • 没有找到相关文章

最新更新