以编程方式点击 UIButton swift

programmatically tap UIButton swift

直接提问:

如何在 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 的显示。我正在创建的菜单中的选项之一是 "Log out" 按钮,它显示 UIAlertViewController 询问用户是否要注销。以下是我在 menuVC:

中的 "Yes" 按钮处理程序的代码
        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 已经有一个对该函数的引用。

你试过了吗:

myAutomatedButton.sendActionsForControlEvents(.TouchUpInside)

这似乎是上一个问题,可能重复,但我发现的 post 是:how to programmatically fake a touch event to a UIButton?

+1 对于 swift 以下 3/4:@Eneko Alonso

还定义了 @IBAction 就可以调用它:

@IBAction func myButtonAction(_ sender: UIButton) {
    // do something
}

func otherMethod() {
   self.myButtonAction(UIButton())
}