UINavigationController 仅在第二次出现视图时隐藏后退按钮
UINavigationController hides back button only on second appearance of view
我有三个视图控制器:一个登录视图、一个主表视图屏幕和一个详细表视图屏幕。这些都是同一个 UINavigationController 的一部分。在主屏幕上,我想禁用后退按钮,以防止用户返回登录屏幕。所以在 viewDidLoad()
函数中我有
// Home View
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
...
}
当这个视图出现时,没有后退箭头但是有字"Back."这个按钮没有任何作用,它似乎被禁用了。当我转到下一个视图(详细视图)时,后退按钮被隐藏。即使我将 hidesBackButton = false
添加到此视图的 viewDidLoad
,仍然没有。但是,在导航栏上向右滑动可以返回。
回到主屏幕后,后退按钮完全隐藏了。如果我要再次前进到详细视图,后退按钮会按需要显示。
事件顺序如下:
- 登录屏幕。登录后弹出主屏幕。
- 主屏幕。后退按钮在那里,它不应该在的地方。
- 详细视图。这个视图应该有一个返回按钮返回到主屏幕。滑动功能仍然可用,因此您可以通过滑动导航栏返回主屏幕。
- 当您返回时,后退按钮消失了!就像它应该的那样。
- 最后,返回(前进)到详细视图,后退按钮应该在那里。
在模拟器上我重置了内容和设置,这似乎解决了问题。
我仍然不知道为什么会出现这个错误。
实解
This 解决方案似乎对我有用!
我只是添加了
var HVC = segue.destinationViewController as! HomeViewController
HVC.navigationItem.setHidesBackButton(true, animated: false)
ViewController 中的 prepareForSegue
方法造成了问题 VC。
尝试添加这个:
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
我遇到了与上述完全相同的问题,我的解决方案是使用:
self.navigationItem.setHidesBackButton(true, animated: false)
在
override func viewDidAppear { ... }
当我在 viewDidLoad 中使用 setHidesBackButton 代码时,我得到了完全相同的错误,但是按照说明移动它就成功了!
我有三个视图控制器:一个登录视图、一个主表视图屏幕和一个详细表视图屏幕。这些都是同一个 UINavigationController 的一部分。在主屏幕上,我想禁用后退按钮,以防止用户返回登录屏幕。所以在 viewDidLoad()
函数中我有
// Home View
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
...
}
当这个视图出现时,没有后退箭头但是有字"Back."这个按钮没有任何作用,它似乎被禁用了。当我转到下一个视图(详细视图)时,后退按钮被隐藏。即使我将 hidesBackButton = false
添加到此视图的 viewDidLoad
,仍然没有。但是,在导航栏上向右滑动可以返回。
回到主屏幕后,后退按钮完全隐藏了。如果我要再次前进到详细视图,后退按钮会按需要显示。
事件顺序如下:
- 登录屏幕。登录后弹出主屏幕。
- 主屏幕。后退按钮在那里,它不应该在的地方。
- 详细视图。这个视图应该有一个返回按钮返回到主屏幕。滑动功能仍然可用,因此您可以通过滑动导航栏返回主屏幕。
- 当您返回时,后退按钮消失了!就像它应该的那样。
- 最后,返回(前进)到详细视图,后退按钮应该在那里。
在模拟器上我重置了内容和设置,这似乎解决了问题。
我仍然不知道为什么会出现这个错误。
实解
This 解决方案似乎对我有用!
我只是添加了
var HVC = segue.destinationViewController as! HomeViewController
HVC.navigationItem.setHidesBackButton(true, animated: false)
ViewController 中的 prepareForSegue
方法造成了问题 VC。
尝试添加这个:
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
我遇到了与上述完全相同的问题,我的解决方案是使用:
self.navigationItem.setHidesBackButton(true, animated: false)
在
override func viewDidAppear { ... }
当我在 viewDidLoad 中使用 setHidesBackButton 代码时,我得到了完全相同的错误,但是按照说明移动它就成功了!