UIBarButtonItems无法正常工作

时间:2018-05-30 21:34:32

标签: ios swift cocoa cocoa-touch uikit

我有4 ViewControllers,A,B,C和D.

  • A可以转为B,C和D.
  • B可以切换到C和D
  • 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 有效,但这只是一种解决方法。

1 个答案:

答案 0 :(得分:2)

对于StackOverflow的魔力,我在解决问题的过程中找到了答案。

问题在于这个小流氓代码:

UINavigationBar

在我的应用程序中使用导航栏工作时,我最终从隐藏的导航栏切换到半透明导航栏。将此代码留在此处意味着半透明导航栏位于D中创建的ViewController之上(容器UINavigationController,它自己以编程方式实例化{{1}}作为子vc),因此阻止我的所有用户输入。

希望这可以拯救别人一些斗争!

快乐的编码! :)

相关问题