我有4 ViewControllers
,A,B,C和D.
以图表显示(粗略地):
A - B - C
\ | /
D
A是UINavigationController
的根,以及最初的ViewController
。出于某些奇怪的原因,每当我从B或C转到D时,D的UIBarButtonItems
根本不起作用。我以编程方式将它们添加到导航栏:
let settingsButton = UIButton(type: .custom)
settingsButton.frame = CGRect(x: 0, y: 0, width: 35, height: 35)
settingsButton.contentMode = .scaleAspectFit
settingsButton.setImage(UIImage(named: "settings-black.png"), for: .normal)
settingsButton.addTarget(self, action: #selector(settingsPressed), for: .touchUpInside)
settingsButton.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10)
if #available(iOS 9.0, *) {
settingsButton.widthAnchor.constraint(equalToConstant: 35).isActive = true
settingsButton.heightAnchor.constraint(equalToConstant: 35).isActive = true
}
navigationItem.setLeftBarButton = UIBarButtonItem(customView: settingsButton)
在Main.storyboard
ViewControllers
中,所有上述NavigationItem
都有UIBarButtonItem
。这些控制器之间的所有segue都是Show(push)segues。我注意到当我改变B和D之间的segue以及C和D以模态呈现时,D功能的navigationController?.isNavigationBarHidden = false
有效,但这只是一种解决方法。
答案 0 :(得分:2)
对于StackOverflow的魔力,我在解决问题的过程中找到了答案。
问题在于这个小流氓代码:
UINavigationBar
在我的应用程序中使用导航栏工作时,我最终从隐藏的导航栏切换到半透明导航栏。将此代码留在此处意味着半透明导航栏位于D中创建的ViewController
之上(容器UINavigationController
,它自己以编程方式实例化{{1}}作为子vc),因此阻止我的所有用户输入。
希望这可以拯救别人一些斗争!
快乐的编码! :)