我正在尝试为导航栏的右按钮创建自定义按钮。但它总是不见了。这是我从viewWillAppear:调用的代码:

func setNavBar() {
    self.navigationController?.setNavigationBarHidden(false, animated: false)

    let rightNavButton : UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "photo_camera"), style: .plain, target: self, action: #selector(onCameraButton(sender:)))

    self.navigationController?.navigationBar.topItem?.hidesBackButton = false
    self.navigationController?.navigationBar.topItem?.rightBarButtonItem = rightNavButton

}

显示后退按钮,因此topItem绝对不是零。但我不知道为什么,右边的按钮不见了。我试着把它做成一个只有一个项目的数组,但仍然没有成功。有人能帮我吗?谢谢。
编辑:顺便说一下,拥有这段代码的视图控制器是从另一个拥有非常相似代码的视图控制器调用的,它工作得很好。不知道这两者有什么区别。这是工作代码:
func setNavBar() {
    self.navigationController?.setNavigationBarHidden(false, animated: false)

    let rightNavButtons : [UIBarButtonItem] = [
        UIBarButtonItem(image: UIImage(named: "edit"), style: .plain, target: self, action: #selector(onEditButton)),
        UIBarButtonItem(image: UIImage(named: "settings"), style: .plain, target: self, action: #selector(onSettingsButton))

    ]

    self.parent?.title = "Profile"
    self.navigationController?.navigationBar.topItem?.hidesBackButton = true
    self.navigationController?.navigationBar.topItem?.rightBarButtonItems = rightNavButtons
}

最佳答案

我在当前项目中实现了以下代码来添加右栏按钮。

func addRightButton(title: String) {
    let barRightButton = UIBarButtonItem(title: title, style: .plain, target: self, action: #selector(rightBarButtonTapped(sender:)))
    self.navigationItem.rightBarButtonItem = barRightButton
}

在我的整个项目中,这对我很有用。您应该使用self.navigationItem.rightBarButtonItem而不是self.navigationController?.navigationBar.topItem?.setRightBarButton(rightNavButton, animated: false)
试试这个,让我知道它是否有效。我希望这对你有帮助。

关于ios - 导航栏的右键丢失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53130206/

10-10 20:32