以编程方式添加UIBarButtonItem

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式添加UIBarButtonItem相关的知识,希望对你有一定的参考价值。

我正在尝试以编程方式添加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

答案

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

Bar按钮存储在navigationItemUIViewController属性中。

另一答案

您正在将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)

以上是关于以编程方式添加UIBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将 UIBarButtonItem 添加到拖到视图上的 UINavigationBar

以编程方式在Swift中添加UIBarButtonItem操作

以编程方式添加到导航栏的UIBarButtonItem无法调用选择器,而添加到工具栏的按钮确实如此

将弹出框添加到以编程方式添加的 UIBarButtonItem 并将图像添加到相同的弹出框 Swift

以编程方式从 UIBarButtonItem

使用 Swift 以编程方式创建的 UIBarButtonItem,不可见