我有三个视图控制器:登录视图,主桌面视图屏幕和详细的tableview屏幕。这些都是同一个UINavigationController的一部分。在主屏幕上,我想禁用后退按钮,阻止用户进入登录屏幕。所以我有viewDidLoad()
函数
// Home View
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
...
}
当此视图显示时,没有后退箭头但是有一个单词" Back。"此按钮不执行任何操作,似乎已禁用。当我转到下一个视图(详细视图)时,后退按钮被隐藏。即使我向此视图的hidesBackButton = false
添加viewDidLoad
,仍然没有。但是,导航栏右侧的滑动允许返回。
现在我回到了主屏幕,后退按钮完全隐藏了。如果我再向前进入详细视图,则会根据需要显示后退按钮。
以下是事件顺序:
答案 0 :(得分:2)
在模拟器上我重置了内容和设置,这似乎解决了这个问题。
我仍然不知道为什么错误发生在第一位。
This解决方案实际上似乎对我有用!
我只是添加了
var HVC = segue.destinationViewController as! HomeViewController
HVC.navigationItem.setHidesBackButton(true, animated: false)
创建有问题VC的ViewController中的prepareForSegue
方法。
答案 1 :(得分:0)
尝试添加此内容:
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
答案 2 :(得分:0)
我遇到了与上面描述的相同的问题,我的解决方案是使用:
self.navigationItem.setHidesBackButton(true, animated: false)
in
override func viewDidAppear { ... }
当我在viewDidLoad中使用setHidesBackButton代码时,我得到了同样的确切错误,但是如上所述移动它就可以了![/ p>