直接问题:
如何以编程方式在Swift 2.0中点击UIButton?
示例:UIButton.tap()
解释为什么我不能直接调用按钮点击功能:
我目前正在使用AKSwiftSlideMenu(https://github.com/ashishkakkad8/AKSwiftSlideMenu)(https://www.cocoacontrols.com/controls/akswiftslidemenu)来创建菜单。这是通过将菜单视图控制器作为子视图添加到主视图控制器来实现的。
let menuVC : BackTableViewController = self.storyboard!.instantiateViewControllerWithIdentifier("backTableViewController") as! BackTableViewController
menuVC.btnMenu = sender
self.view.addSubview(menuVC.view)
self.addChildViewController(menuVC)
如您所见,btnMenu
UIButton
正在传递给menuVC
。在两个视图控制器上具有相同的按钮允许在主视图控制器中使用单个onSlideMenuButtonPressed(sender : UIButton)
功能来处理menuVC
的呈现。我正在创建的菜单中的一个选项是"退出"显示UIAlertViewController
的按钮,询问用户是否要退出。以下是我的代码#34;是" menuVC
中的按钮处理程序:
logOutAlert.addAction(UIAlertAction(title:"Yes", style: .Default, handler: { action in
self.btnMenu.touchInside
CURRENT_USER.unauth()
NSUserDefaults.standardUserDefaults().setValue(nil, forKey: "uid")
print("User logged out")
CurrentUser.checkIfUserIsLoggedIn()
}))
我试图点击带有touchInside
方法的按钮(当然不对),以便关闭menuVC
。是否存在UIButton.tap()
等效内容或访问btnMenu
onSlideMenuButtonPressed(sender : UIButton)
函数的方法?
旁注:
我玩了为menuVC
创建一个homeViewControllerDelegate对象的想法,直接调用onSlideMenuButtonPressed(sender : UIButton)
,这可能有效,但看起来像是btnMenu
已经有了参考该功能。
答案 0 :(得分:9)
你试过了吗?
myAutomatedButton.sendActionsForControlEvents(.TouchUpInside)
这似乎是之前的问题和可能的重复,但我找到的帖子是:how to programmatically fake a touch event to a UIButton?
+1快速3/4以下:@Eneko Alonso
答案 1 :(得分:0)
也可以通过定义@IBAction
来调用它:
@IBAction func myButtonAction(_ sender: UIButton) {
// do something
}
func otherMethod() {
self.myButtonAction(UIButton())
}