Как программно добавить действие uibutton? - PullRequest
0 голосов
/ 01 октября 2018

Я создал кнопку, и мне было интересно, как программно кодировать действие для UIButton, чтобы перевести меня на другой контроллер представления?

Это все, что у меня есть:

let getStartedButton: UIButton = {
    let getStartedButton =  UIButton()
    getStartedButton.backgroundColor = UIColor(red:0.24, green:0.51, blue:0.59, alpha:1.0)
    getStartedButton.setTitle("Get Started", for: .normal)
    getStartedButton.titleLabel?.font = UIFont(name: "Helvetica Bold", size: 18)
    getStartedButton.translatesAutoresizingMaskIntoConstraints = false
    getStartedButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)

    return getStartedButton
}()

@objc func buttonAction(sender: UIButton!) {
    print("...")
}

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Существует 3 способа отображения нового контроллера вида:

  1. Представление контроллера вида:

    @objc func buttonAction(sender: UIButton!) {
        let destinationVC = self.storyboard?.instantiateViewController(withIdentifier: "DestinationViewController") as! DestinationViewController
        self.present(destinationVC, animated: true, completion: nil)
    }
    
  2. Выполнение перехода изРаскадровка:

Если у вас уже есть View Controller, который вы хотите представить в раскадровке, и он имеет переход от вашего исходного VC к вашему VC назначения, то вы можете добавить идентификатор ки сделай это ...

    @objc func buttonAction(sender: UIButton!) {
         self.performSegue(withIdentifier: "MySegueIdentifier", sender: self)
    }

Перенос View Controller в стек (это работает, только если ваш оригинальный VC встроен в Navigation Controller):

@objc func buttonAction(sender: UIButton!) {
    let destinationVC = self.storyboard?.instantiateViewController(withIdentifier: "DestinationViewController") as! DestinationViewController
    self.navigationController?.pushViewController(destinationVC, animated: true)
}
0 голосов
/ 02 октября 2018

Если вы хотите выполнить переход к другому ViewController после нажатия кнопки, вы можете сделать это двумя способами:

1) присутствует (_: анимированный: завершение:)

@objc func buttonAction(sender: UIButton!) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "Main") as! SecondViewController
    self.present(vc, animated: true, completion: nil)
}

2) pushViewController (_: animated:)

@objc func buttonAction(sender: UIButton!) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "Main") as! SecondViewController
    self.navigationController?.pushViewController(vc, animated: true)
}
...