为什么 UIBarButtonItem 目标和操作为零?
Why UIBarButtonItem target and action comes nil?
我想在 swift 中以编程方式按下 UIBarButtonItem
。我查看了 Whosebug 中提出的其他问题并做了同样的事情,但是当手动单击时它没有 work.doing 我想要的,但我需要以编程方式单击。
我的示例代码是
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let items = self.navigationItem.rightBarButtonItems
let item = items?.first
UIApplication.shared.sendAction(item.action, to: item?.target, from: nil, for: nil) // not working
_ = item.target?.perform(item.action, with: nil) // not working
let action = item.action // result is nil
let target = item.target / result is nil and item is not nil
}
在viewDidLoad中添加一个导航栏按钮项,如下所示:
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go", style: .plain, target: self, action: #selector(yourFunctionToCall))
现在编写按钮操作的函数
@objc func yourFunctionToCall() {
print("function called...")
}
let items = self.navigationItem.rightBarButtonItems
let item = items?.first
(item.customView as? UIButton).sendActions(for: .touchUpInside)
self.navigationItem.rightBarButtonItems.first
将 return UIBarButtonItem
不是您的 continuousVisitsButton
按钮,并且您已将 target
和选择器设置为 continuousVisitsButton
而不是你的 UIBarButtonItem
事实上,您只是用 customView 创建了一个 UIBarButtonItem
并将其设置为右栏按钮项。
self.navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: continuousVisitsButton)
很明显,您的 rightBarButton 项既没有目标也没有操作,因此打印 returns nil。
您需要的是其中配置了这两个属性的 customView,因此与其尝试将触摸事件发送到栏按钮项,不如访问其自定义视图并向其发送触摸事件,以实际触发选择器:)
。希望这有帮助
我想在 swift 中以编程方式按下 UIBarButtonItem
。我查看了 Whosebug 中提出的其他问题并做了同样的事情,但是当手动单击时它没有 work.doing 我想要的,但我需要以编程方式单击。
我的示例代码是
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let items = self.navigationItem.rightBarButtonItems
let item = items?.first
UIApplication.shared.sendAction(item.action, to: item?.target, from: nil, for: nil) // not working
_ = item.target?.perform(item.action, with: nil) // not working
let action = item.action // result is nil
let target = item.target / result is nil and item is not nil
}
在viewDidLoad中添加一个导航栏按钮项,如下所示:
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go", style: .plain, target: self, action: #selector(yourFunctionToCall))
现在编写按钮操作的函数
@objc func yourFunctionToCall() {
print("function called...")
}
let items = self.navigationItem.rightBarButtonItems
let item = items?.first
(item.customView as? UIButton).sendActions(for: .touchUpInside)
self.navigationItem.rightBarButtonItems.first
将 return UIBarButtonItem
不是您的 continuousVisitsButton
按钮,并且您已将 target
和选择器设置为 continuousVisitsButton
而不是你的 UIBarButtonItem
事实上,您只是用 customView 创建了一个 UIBarButtonItem
并将其设置为右栏按钮项。
self.navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: continuousVisitsButton)
很明显,您的 rightBarButton 项既没有目标也没有操作,因此打印 returns nil。
您需要的是其中配置了这两个属性的 customView,因此与其尝试将触摸事件发送到栏按钮项,不如访问其自定义视图并向其发送触摸事件,以实际触发选择器:)
。希望这有帮助