【问题标题】:Adding a UIBarButtonItem programmatically以编程方式添加 UIBarButtonItem
【发布时间】:2019-12-25 21:06:29
【问题描述】:

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

【问题讨论】:

  • 能否请您扩展您的问题并解释您遇到的问题?
  • @LennartHase 我在模拟器导航栏上显示右侧导航栏时遇到问题。
  • 你在哪里展示这个 UINavigationController?

标签: swift uinavigationcontroller uibarbuttonitem swift5 swift5.1


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    问题是由不是从子 VC 而是从协调器创建条形按钮引起的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多