弹出视图控制器导致条形按钮项消失

Posted

技术标签:

【中文标题】弹出视图控制器导致条形按钮项消失【英文标题】:Popping View Controller causes Bar Button Item to disappear 【发布时间】:2015-08-06 05:32:58 【问题描述】:

我的应用中有两个 ViewControllers。第一个 ViewController (比如说,ViewControllerOne 有一个 Bar Button Item,它在 TableView 中有一个幻灯片 (与问题无关)。我在第二个 ViewController (比如 ViewControllerTwo 中禁用了 导航栏,并添加了自定义视图和按钮。我已经编写了在按钮的操作中弹出 ViewControllerTwo 的代码。但是一旦弹出,ViewControllerOne中的BarButtonItem就消失了。 这是我在 ViewControllerTwo

中编写的代码
[self.navigationController setNavigationBarHidden:YES animated:YES];

- (IBAction)backCustom:(id)sender 

   [self.navigationController popViewControllerAnimated:YES];

知道为什么 Bar Button Item 会因此消失吗?我确信这段代码是原因,因为当我删除它时,它使用默认的 NavigationBar 运行良好。但我需要为我的项目自定义一个

【问题讨论】:

【参考方案1】:

在您的第一个 Viewcontroller 中添加以下行

-(void)viewWillAppear:(BOOL)animated

[super viewWillAppear:animated];

[self.navigationController setNavigationBarHidden:NO animated:YES];

【讨论】:

如果你想要导航栏,在每个视图控制器中处理这个 为什么我在当前viewController的“隐藏”部分编码后,前一个ViewController的导航栏消失了? viewWillAppear:animated 上的 (BOOL)animated 参数。更改选项卡时,它将以NO 出现,因为动画是即时的。另一方面,如果它被animated:YES 从导航堆栈中推送弹出,那么它将以YES 出现。虽然这看起来像一个 hack,但它是正确的方法:你不需要弄清楚谁是调用者,相反,专注于这样一个事实:如果你的视图控制器会显示动画,你有时间自己做动画,如果没有,就搞砸,立即显示(或在这种情况下,隐藏)所有内容。 快速回答我从这里***.com/questions/7107503/…

以上是关于弹出视图控制器导致条形按钮项消失的主要内容,如果未能解决你的问题,请参考以下文章

iOS 在弹出窗口中显示视图控制器

弹出到根视图控制器时导航栏消失

在动画推送和弹出时,导航项中带有搜索栏的连续视图控制器会导致视图模糊[重复]

拖动到弹出视图控制器会导致固定到底部的按钮跳转(使用标签栏)

在将导航控制器弹出回根视图的选项卡栏上检测到双击

iOS 弹出框在关闭后不会消失