UIButton isSelected по умолчанию - PullRequest
1 голос
/ 04 июня 2019

Мне нужно вызвать метод IBAction, как только загрузится View Controller.У меня есть IBOutlet для кнопки и IBAction.Как позвонить в IBAction по умолчанию?

Ответы [ 3 ]

0 голосов
/ 04 июня 2019

Контроллер представления на самом деле не имеет определенной кнопки, которая бы имела «метод IBAction».Вы можете иметь 0, 1, две или дюжину кнопок в контроллере вида.Таким образом, нет общего способа вызвать «метод IBAction» для контроллера представления при его первой загрузке.

Если у вас есть метод кнопки:

@IBAction func buttonMethod(_ sender: Any?)

Тогда вы можете просто вызвать этот методfrom viewDidAppear:

переопределить динамический публичный функционал viewDidAppear (_ animated: Bool) {buttonMethod (nil) // Остальная часть вашего метода viewDidAppear}

Обратите внимание, что viewDidAppear() вызывается в самый разконтроллер представления снова отображается, поэтому, если вы закроете его модальным, а затем откроете его, viewDidAppear() будет вызван снова.Напротив, viewDidLoad() вызывается только один раз за время существования контроллера представления.

0 голосов
/ 04 июня 2019

Вы можете вызвать метод IBAction в viewDidLoad, используя кнопку IBOutlet как sender.

class ViewController: UIViewController {
    @IBOutlet weak var submtButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        submtButtonAction(submtButton)
    }
    @IBAction func submtButtonAction(_ sender: Any) {

    }
}
0 голосов
/ 04 июня 2019
@IBAction func buttonPressed(_ sender: UIButton) {
    // do something
}

Хорошо, что внутри @IBAction называется кодом.Давайте подумаем об этом.Мы можем переместить этот код в другое место, верно?

Но где?Хорошо, это действительно зависит от логики и архитектуры вашего приложения, но, например, переместите его на другой метод.

func doSomething() {
    // do something
}

Видите?Теперь у нас есть код, который был изначально в действии внутри другого метода, который мы можем вызвать из @IBAction

@IBAction func buttonPressed(_ sender: UIButton) {
    doSomething()
}

, а также из другого места нашего класса

override func viewDidLoad() {
    super.viewDidLoad()
    doSomething()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...