Swift 为什么UIBarbuttonite的目标和行动是零?
我想在swift中以编程方式按UIBarButtonItem。我查看了stackoverflow中提出的其他问题,并做了相同的操作,但没有起作用。手动单击时执行我想要的操作,但我需要以编程方式单击。 我的示例代码是Swift 为什么UIBarbuttonite的目标和行动是零?,swift,uinavigationbar,uibarbuttonitem,Swift,Uinavigationbar,Uibarbuttonitem,我想在swift中以编程方式按UIBarButtonItem。我查看了stackoverflow中提出的其他问题,并做了相同的操作,但没有起作用。手动单击时执行我想要的操作,但我需要以编程方式单击。 我的示例代码是 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let items = self.navigationItem.rightBarButtonItems
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...")
}
在viewDidLoad中添加如下导航栏按钮项:
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go", style: .plain, target: self, action: #selector(yourFunctionToCall))
现在编写按钮操作的函数
@objc func yourFunctionToCall() {
print("function called...")
}
self.navigationItem.rightBarButtonItems.first
将返回UIBarButtonItem
而不是您的continuousVisitsButton
按钮,并且您已将目标和选择器设置为您的continuousVisitsButton
而不是UIBarButtonItem
实际上,您只是使用customView创建了一个uiBarButtonim
,并将其设置为右栏按钮项
self.navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: continuousVisitsButton)
很明显,您的rightBarButton项既没有目标也没有动作,因此打印返回零
您需要的是它内部的customView,它配置了这两个属性,因此,与其尝试将触摸事件发送到工具栏按钮项,不如访问它的自定义视图并将触摸事件发送到它,以实际触发选择器:)
。希望这有帮助
self.navigationItem.rightBarButtonItems.first
将返回UIBarButtonItem
而不是您的continuousVisitsButton
按钮,并且您已将目标和选择器设置为您的continuousVisitsButton
而不是UIBarButtonItem
实际上,您只是使用customView创建了一个uiBarButtonim
,并将其设置为右栏按钮项
self.navigationItem.rightBarButtonItems = [UIBarButtonItem(customView: continuousVisitsButton)
很明显,您的rightBarButton项既没有目标也没有动作,因此打印返回零
您需要的是它内部的customView,它配置了这两个属性,因此,与其尝试将触摸事件发送到工具栏按钮项,不如访问它的自定义视图并将触摸事件发送到它,以实际触发选择器:)
。希望这对您有所帮助您是如何添加导航栏项目的?@SandeepBhandari in viewDidLoad.->。让continuousVisitsButton=Util.createRightButton(“ic_skip_next”)continuousVisitsButton.addTarget(self,action:#选择器(continuousVisitsButtonPressed),for:UIControlEvents.touchUpInside)self.navigationItem.rightBarButtonItems=[UIBarButtonItem(customView:continuousVisitsButton)、Util.createSpaceItem()、UIBarButtonim(customView:timeFilterButton)]您是否检查了提供的解决方案?是否有效?如何添加导航栏项?@Sandeppebhandari在viewDidLoad中。->。让continuousVisitsButton=Util.createRightButton(“ic_skip_next”)continuousVisitsButton.addTarget(self,action:#选择器(continuousVisitsButtonPressed),for:UIControlEvents.touchUpInside)self.navigationItem.rightBarButtonItems=[UIBarButtonItem(customView:continuousVisitsButton),Util.createSpaceItem(),UIBarButtonItem(customView:timeFilterButton)]您是否检查了提供的解决方案?它是否有效?非常感谢我理解我的错误祝您愉快:)@user9413194:很高兴我能帮助您:+1非常感谢我理解我的错误祝您愉快:)@user9413194:很高兴我能帮助您:+1