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隐藏后无法显示后退按钮的主要内容,如果未能解决你的问题,请参考以下文章