以编程方式点击 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())
}
直接提问:
如何在 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
:
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())
}