Swift隐藏后无法显示后退按钮

Posted

技术标签:

【中文标题】Swift隐藏后无法显示后退按钮【英文标题】:Swift can't show back button after hiding it 【发布时间】:2015-04-01 14:58:55 【问题描述】:

我有一个带有自定义后退按钮的静态单元格的 UITableViewController。我用代码隐藏了 viewDidLoad 中的后退按钮:

var cancelBtn = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "closeSettings")
self.navigationItem.hidesBackButton = true
self.navigationItem.leftBarButtonItem = cancelBtn

如果我没有设置 self.navigationItem.hidesBackButton = true 行,则返回按钮箭头仍会出现。使用代码中的那一行,后退按钮被隐藏,而取消按钮正是我想要的样子。当我从单元格打开另一个视图控制器时,问题就来了,后退按钮不存在。我在单击单元格时实例化视图控制器,并使用导航控制器推送视图控制器。我试图把

self.navigationItem.hidesBackButton = false

在 pushViewController() 之前的代码中。当我这样做时,我看到后退按钮出现,但是当新的视图控制器被推到导航控制器上时,后退按钮消失了。

我什至尝试将 hidesBackButton = false 行放在目标视图控制器的 viewDidLoad 和 viewDidAppear 中,但我无法让后退按钮出现。任何人都可以帮助我在我可能做错的事情上朝着正确的方向前进吗?

【问题讨论】:

【参考方案1】:

您是否尝试将self.navigationItem.hidesBackButton = false 设置为viewWillDisappear()

【讨论】:

我确实尝试过,但不幸的是它没有解决问题。需要注意的一个奇怪行为是,当我单击单元格以打开下一个视图控制器(即 UITableViewController)时,后退按钮消失了。单击一个单元格会关闭 TableViewController 并很好地返回到上一个。当我再次单击同一个单元格以打开视图控制器时,现在可以看到后退按钮。有谁知道什么会导致这种行为? 那是因为你正在使用 viewDidLoad()。研究 ViewDidAppear 和 viewDidLoad() 之间的区别。 完美。感谢您引导我朝着正确的方向前进。【参考方案2】:

试试这个设置

self.navigationItem.hidesBackButton = false

在 ViewWillAppear 部分的目标视图控制器上。

【讨论】:

这似乎也不起作用。抱歉,我确实忘记提及这是在 UISplitViewController 的详细视图中。

以上是关于Swift隐藏后无法显示后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:我无法隐藏后退按钮

Swift 隐藏后退按钮

按下后退按钮后,从另一个视图控制器更改按钮

在 Grails 中注销后,浏览器后退按钮显示上一页

如何隐藏屏幕标题但显示后退按钮?

无法更改后退栏按钮文本