在我的应用中,我有一个从HomeViewController
到EditProfileViewController
的推送服务,其中应该有一个后退按钮为leftBarItem
和一个设置齿轮为rightBarItem
。后退按钮正常显示,但右边的项目丢失。这些ViewControllers
实时发生在具有导航栏的MainNavigationController
中。
我尝试在rightBarButton
的{{1}}中定义ViewDidLoad
,也尝试在故事板中为View控制器添加一个EditProfileVC
。
rightBarItem
有趣的是,如果我将rightBar更改为leftBar项目,则后退按钮将替换为设置cog,并且可以按我期望的方式工作,但是我无法返回主页。
let buttonItem = UIBarButtonItem(image: settingsIcon, style: .plain, target: self, action: #selector(settingsPressed))
buttonItem.tintColor = UIColor(.settingsIconTint)
navigationItem.rightBarButtonItem = buttonItem
答案 0 :(得分:1)
要在rightBarButtonItem
中设置navigationBar
,
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")
}
}
在上面的代码中,我添加了UIBarButtonItem
和title
作为Settings
的{{1}}的{{1}}。
不需要配置rightBarButtonItem
,这不是必需的。默认添加navigationBar
。
截屏:
如果它不能满足您的要求,请添加期望的屏幕截图,以便我提供帮助。