以编程方式点击UIButton swift

时间:2016-04-07 02:59:52

标签: swift uibutton akswiftslidemenu

直接问题:

如何以编程方式在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已经有了参考该功能。

2 个答案:

答案 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())
}