UIBarButtonItems 不会出现在导航栏中

UIBarButtonItems won't appear in Navigation Bar

我有一个 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]
  }

这是结果(视图层次结构也可见):

我想也许我需要在 Storyboard 中添加条形按钮项目,但这似乎违背了像我试图做的那样在代码中这样做的目的。

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

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

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

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

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

@IBOutlet weak var navItem: UINavigationItem!

然后你可以说:

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

您应该会在文档大纲中看到它,如下所示: