我读过类似的问题,其中问题是由多个导航 Controller 引起的,但我只有一个。这是我的导航流程。
VC = UIViewController, NC = UINavigationController
VC1 -modal-> NC -root-> VC2 -show-> VC3
VC1 未嵌入在导航 Controller 中,我使用 performSegueWithIdentifier:sender: 启动模式转场。
VC2 然后使用 show
segue 来呈现 VC3,即后退按钮不可见的那个。但它仍然有效。但是,如果我退出主屏幕然后再次进入应用程序,它确实会出现,如下所示:
https://gfycat.com/VelvetyThisHamster .
有什么想法为什么会发生这种情况吗?
编辑:为了说清楚:我希望按钮既可见又有效(问题不是它正在工作,而是它被隐藏了)
编辑2:
如果我将导航流程更改为这样
NC -root-> VC2 -show-> VC3
然后后退按钮将按预期工作。所以问题是,如何在第一个导航 Controller 之前添加一个没有导航 Controller 的常规 View Controller ?我之前想要它,因为 VC1 不应该有导航栏,而 VC2 应该以模态方式呈现。
最佳答案
试试这个
隐藏
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
//use this
self.navigationItem.setHidesBackButton(true, animated: false)
//else use this
self.navigationItem.leftBarButtonItem = nil
}
显示
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
//use this
self.navigationItem.setHidesBackButton(false, animated: false)
//else
self.navigationController.navigationItem.backBarButtonItem.enabled = TRUE
}
更新
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
//use this
self.navigationItem.setHidesBackButton(false, animated: false)
//else
let backButton = UIBarButtonItem(title: "leftbutton", style: UIBarButtonItemStyle.Plain, target: self, action: "buttonMethod")
self.navigationItem.leftBarButtonItem = backButton
}
func buttonMethod() {
print("Perform action")
}
关于ios - 返回按钮隐藏在导航栏中(但仍然有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479079/