以编程方式添加UIBarButtonItem

问题描述 投票:0回答:2

我正在尝试以编程方式添加UIBarButtonItem。

let navigation = UINavigationController()
let rightBarButton = UIBarButtonItem(title: "LogIn", style: .plain, target: self, action: #selector(logInPressed))
navigation.navigationItem.rightBarButtonItem = rightBarButton

并且还为测试提供了选择器功能。

@objc func logInPressed() {
   print("go to login")
}

遗憾的是,此按钮不起作用-在模拟器的导航栏上看不到工具栏按钮。

经过断点检查,rightBarButtonItem存在。

可能是由应用协调器而不是子VC创建条形按钮引起的。

[请任何人帮助解决此问题?Simulator screenshot

swift uinavigationcontroller uibarbuttonitem swift5 swift5.1
2个回答
0
投票

该问题不是由子VC创建的,而是由协调器创建的。

Bar按钮存储在navigationItemUIViewController属性中。


0
投票

您正在将UIBarButtonItem添加到NavigationController的新实例。因此它不会出现在那里。

因此在您的视图控制器中,您想使用以下方法之一处理右导航栏:override func viewDidLoad()要么override func viewWillAppear

添加:

let rightBarButton = UIBarButtonItem(title: "LogIn", style: .plain, target: self, action: #selector(logInPressed))

self.navigationController?.navigationItem.setRightBarButton(rightBarButton, animated: true)
© www.soinside.com 2019 - 2024. All rights reserved.