Программно нажмите UIButton Swift
Прямой вопрос:
Как программно нажать UIButton в Swift 2.0?
Пример: 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
которые спрашивают, хочет ли пользователь выйти. Ниже приведен мой код для моего обработчика кнопки "Да" в 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)
функционировать?
Примечание: я играл с идеей создания объекта homeViewControllerDelegate для menuVC
позвонить onSlideMenuButtonPressed(sender : UIButton)
напрямую, что может сработать, но это похоже на то, как btnMenu
уже имеет ссылку на эту функцию.
1 ответ
Ты пытался:
myAutomatedButton.sendActionsForControlEvents(.TouchUpInside)
Похоже, что это предыдущий вопрос и возможный дубликат, но пост, который я нашел, был: как программно подделать сенсорное событие для UIButton?
+1 для быстрого 3/4 ниже: @Eneko Alonso
Также с @IBAction
Определенный можно просто назвать:
@IBAction func myButtonAction(_ sender: UIButton) {
// do something
}
func otherMethod() {
self.myButtonAction(UIButton())
}