Direct Question:
How do you programmatically tap a UIButton in Swift 2.0?
Example: UIButton.tap()
Explanation as to why i cannot call button click function directly:
I am currently using AKSwiftSlideMenu (https://github.com/ashishkakkad8/AKSwiftSlideMenu) (https://www.cocoacontrols.com/controls/akswiftslidemenu) to create a menu. This is accomplished by adding the menu view controller to the main view controller as a child view.
let menuVC : BackTableViewController = self.storyboard!.instantiateViewControllerWithIdentifier("backTableViewController") as! BackTableViewController
menuVC.btnMenu = sender
self.view.addSubview(menuVC.view)
self.addChildViewController(menuVC)
As you can see, the btnMenu
, which is a UIButton
, is being passed to the menuVC
. Having the same button on both view controllers allows for a single onSlideMenuButtonPressed(sender : UIButton)
function in the home view controller to handle the presentation of the menuVC
. One of the options in the menu i am creating is the "Log out" button that presents a UIAlertViewController
which ask if the user wants to sign out. The following is my code for my "Yes" button handler in the 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()
}))
I am attempting to tap the button with the touchInside
method (which is not right of course) in order to dismiss the menuVC
. Is there such thing as a UIButton.tap()
equivalent or a way to access the btnMenu
onSlideMenuButtonPressed(sender : UIButton)
function?
Side Note:
I played with the idea of creating a homeViewControllerDelegate object for the menuVC
to call the onSlideMenuButtonPressed(sender : UIButton)
directly, which might work, but it seems like a round about way seeing as the btnMenu
already has a reference to that function.
have you tried:
myAutomatedButton.sendActionsForControlEvents(.TouchUpInside)
This appears to be a previous question and a possible duplicate, but the post I found was: how to programmatically fake a touch event to a UIButton?
+1 for swift 3/4 below: @Eneko Alonso
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With