如何手动触发 UIBarButtonItem 点击事件?

How to fire a UIBarButtonItem tap event manually?

我有一个自定义 UIButton,它是 UIBarButtonItem 的子视图:

guard let tab1 = self.tabBar.items![0].value(forKey: "view") as? UIView else {return}

    let button2Test = UIButton()
    tab1.addSubview(button2Test)

自定义 UIButton,有一个目标:

button2Test.addTarget(self, action: #selector(buttonTouchUpInsideP3), for: [.touchUpInside])
button2Test.addTarget(self, action: #selector(buttonTouchInsideBoundsP3), for: [.touchDown, .touchDragEnter])
button2Test.addTarget(self, action: #selector(buttonDraggedOutOfBoundsP3), for: [.touchDragExit, .touchCancel])

基本上,在 buttonTouchUpInsideP3 函数中,我想以编程方式/手动使特定索引处的 UIBarButtonItem 像被点击一样触发,因为 UIButton 的目标不幸的是,不允许点击下面的实际 UIBarButtonItem...

我的尝试由于错误而没有成功:(我从 outdated Q 中得到)。请注意,我在 buttonTouchUpInsideP3 目标函数中调用了它,一旦您松开按钮。

let homeTabBarItem = self.tabBar.items![0]
UIApplication.sharedApplication.sendAction(homeTabBarItem.action, to: homeTabBarItem.target, from: nil, forEvent: nil)

您可以直接设置 UIBarButtonItem 的目标和操作属性。

我知道怎么做了:

tabBarController.selectedIndex = 0

把这个放在按钮的 TouchUpInside 函数里就行了! ;)

您或许还应该致电:

self.tabBar(self.tabBar, didSelect: self.tabBar.items![0])