【问题标题】:Swift can't show back button after hiding itSwift隐藏后无法显示后退按钮
【发布时间】: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 中,但我无法让后退按钮出现。任何人都可以帮助我在我可能做错的事情上朝着正确的方向前进吗?

【问题讨论】:

    标签: iphone swift ios8 xcode6


    【解决方案1】:

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

    【讨论】:

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

    试试这个设置

    self.navigationItem.hidesBackButton = false
    

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

    【讨论】:

    • 这似乎也不起作用。抱歉,我确实忘记提及这是在 UISplitViewController 的详细视图中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2021-10-07
    • 2014-11-17
    • 2015-02-07
    相关资源
    最近更新 更多