Программно нажмите 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() эквивалент или способ доступа к btnMenuonSlideMenuButtonPressed(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())
}
Другие вопросы по тегам