UIBarButtonItems不会出现在导航栏中

时间:2016-07-18 18:58:02

标签: ios swift uibarbuttonitem

我有UIViewContoller故意未嵌入UINavigationController,我想在导航区域添加自定义按钮。我相信我编写的代码应该可行,因为它遵循我在几个关于UIBarButtonItem的线程上找到的建议方法(这些主要与样式有关)。这是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    let settingsButton = UIBarButtonItem(title: "Settings", style: .Plain, target: self, action: #selector(self.segueToSettings(_:)))
    let saveToLogButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(self.logThisLift(_:)))
    let viewLogButton = UIBarButtonItem(title: "Log", style: .Plain, target: self, action: #selector(self.segueToLog(_:)))

    self.navigationItem.leftBarButtonItem = settingsButton
    self.navigationItem.rightBarButtonItems = [viewLogButton, saveToLogButton]
  }

以及结果(视图层次结构也可见):

enter image description here

我想也许我需要在故事板中添加条形按钮项目,但这似乎会破坏在我试图做的代码中这样做的目的。

我也试过调试视图层次结构,但我在那里看不到它们。

有人知道为什么这些不会出现吗?

1 个答案:

答案 0 :(得分:4)

在您的代码中,您使用self.navigationItem,但由于您的控制器未嵌入导航控制器,因此您没有导航项。

您已添加导航栏,但需要添加导航项。

您必须将导航项拖动到导航栏,然后绑定到代码(通过插座)。之后应该是这样的:

@IBOutlet weak var navItem: UINavigationItem!

然后你可以说:

self.navItem.leftBarButtonItem = settingsButton
self.navItem.rightBarButtonItems = [viewLogButton, saveToLogButton]

您应该在文档大纲中看到它:

Navigation item