UINavigation 后退栏按钮

Posted

技术标签:

【中文标题】UINavigation 后退栏按钮【英文标题】:UINavigation back bar button 【发布时间】:2013-10-31 03:29:48 【问题描述】:

我有一个UITableViewController 作为root view controllerUINavigationController

应用启动时,导航栏上没有返回栏按钮。但是,当我单击其中一个表格视图单元格,然后单击返回时,原始UITableViewController 的顶部会出现一个返回栏按钮。我不想要这个。我怎样才能摆脱它?

【问题讨论】:

由于返回按钮是由 UINavigationController 管理的,所以肯定有什么可以返回的。我很好奇当你点击返回按钮时会发生什么?您必须将其他内容推送到导航堆栈上。 【参考方案1】:

在您希望显示后退按钮的任何视图控制器上,您可以将其添加到viewDidLoad 方法中:

[self.navigationItem setHidesBackButton:YES animated:NO];

或者,如果您希望更改动画,您可以在viewWillAppear:(BOOL)animated: 中添加此调用:

[self.navigationItem setHidesBackButton:YES animated:animated];

【讨论】:

【参考方案2】:

当您的应用程序打开时,UITableViewController 不会显示Back 按钮,因为没有什么可以返回。这就是初始视图控制器。

至于第二个UIViewController,它推到前一个UITableViewController 的顶部 - 如果你不想要Back 按钮 - 使用Modal 转移而不是Push 转账。

Apple 的Navigation Controller 就是这样工作的。它像堆栈一样工作。一个UIViewController推送到当前的。

但是,如果您仍然希望在 Modal 上添加一个 Navigation Bar,请继续 UIViewController,您可以手动将其添加到 Interface Builder 中:

然后您可以将UIBarButton 添加到Navigation Bar

但是如果你仍然坚持简单地隐藏Back按钮,那么使用这个方法:

把它放在你的UIViewController 类的实现的viewDidLoad 方法中:

[self.viewController setHidesBackButton:YES animated:NO];

【讨论】:

好吧,我明白了。我尝试了模态转移,但导航栏完全消失了,我也不想要。如果可能的话,我只想要没有新的后退按钮的原始导航栏(右侧有一个添加按钮)。 仅供参考 - 如果你想从这个 UIViewControllersegue 这将是一个错误的方法,因为它是一个 Modal segue。 在 IB 中更改该设置只会更改 IB 为您呈现它的方式,它实际上不会添加导航栏 - 当且仅当您在导航控制器中并且没有隐藏时才会出现酒吧。 ...这就是为什么你应该向下滚动到我的答案的底部。

以上是关于UINavigation 后退栏按钮的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中为 uinavigation 栏设置色调颜色而不中断栏按钮项目 [重复]

如何将按钮添加到 UINavigation 项?

如何更改 UINavigation leftBarButtonItem 的颜色

从 UIView 加载 UINavigation 控制器

带有自定义图像的 UINavigation 栏

swift iOS中的UINavigation状态栏颜色变化[重复]