以编程方式添加 UIBarButtonItem

Adding a UIBarButtonItem programmatically

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

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

并且还做了一个selector函数来测试。

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

不幸的是,这不起作用 - 栏按钮在模拟器的导航栏上不可见。

断点检测,rightBarButtonItem存在

问题可能是由应用程序协调器而不是子 VC 创建栏按钮引起的。

谁能帮忙解决这个问题? Simulator screenshot

问题是由于创建条形按钮不是来自子 VC,而是来自协调器。

条形按钮存储在 UIViewControllernavigationItem 属性 中。

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