当 leftBarButtonItem 工作正常时,RightBarButtonItem 未显示

RightBarButtonItem not showing up, when leftBarButtonItem works fine

在我的应用程序中,我有一个从 HomeViewControllerEditProfileViewController 的推送 segue,它应该有一个后退按钮作为 leftBarItem 和一个设置齿轮作为 rightBarItem。后退按钮正常显示,但缺少正确的项目。这些 ViewControllers 直播发生在有导航栏的 MainNavigationController 中。

我尝试在 EditProfileVCViewDidLoad 中定义 rightBarButton,我还尝试在视图控制器的故事板中定义 rightBarItem


    let buttonItem = UIBarButtonItem(image: settingsIcon, style: .plain, target: self, action: #selector(settingsPressed))
    buttonItem.tintColor = UIColor(.settingsIconTint)
    navigationItem.rightBarButtonItem = buttonItem

有趣的是,如果我将 rightBar 更改为 leftBar 项目,后退按钮将替换为设置齿轮并按我预期的方式工作,但我无法返回主页。


    let buttonItem = UIBarButtonItem(image: settingsIcon, style: .plain, target: self, action: #selector(settingsPressed))
    buttonItem.tintColor = UIColor(.settingsIconTint)
    navigationItem.leftBarButtonItem = buttonItem

要在navigationBar中设置rightBarButtonItem

class HomeViewController: UIViewController {
    @IBAction func openEditVC(_ sender: UIButton) {
        if let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "EditProfileViewController") as? EditProfileViewController {
        self.navigationController?.pushViewController(controller, animated: true)
        }
    }
}

class EditProfileViewController: UIViewController {
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let buttonItem = UIBarButtonItem(title: "Settings", style: .plain, target: self, action:  #selector(settingsPressed))
        buttonItem.tintColor = .red
        navigationItem.rightBarButtonItem = buttonItem
    }

    @objc func settingsPressed() {
        print("Setting Pressed")
    }
}

在上面的代码中,我添加了 UIBarButtonItemtitle Settings 作为 navigationBarrightBarButtonItem

无需配置 leftBarButtonItem 不需要。默认添加Back button

截图:

如果它不能满足您的要求,请添加预期内容的屏幕截图,以便我提供帮助。