Селектор возвращает значение в Swift? - PullRequest
0 голосов
/ 16 января 2020

Мне было интересно, можно ли заставить селектор возвращать значение, а затем установить это значение для некоторой переменной, если, например, нажата кнопка.

Вот пример того, что я имею в виду:

let test = MyTapGesture(target: self, action: #selector(sampleFunction))
//somehow, here, I wanted the selector to return the value 5, and I can access it in this code
cell.button.addGestureRecognizer(test)

и код селектора будет выглядеть примерно так:

@objc sampleFunction() -> Int{
    //do some stuff that's important when the button is pressed
    return 5
}

Возможно ли это?

Спасибо!

1 Ответ

1 голос
/ 16 января 2020

Общий ответ для Есть ли селектор, возвращающий значение в Swift?

Да, селектор - это просто ключ для определенного c существующего метода, поэтому, если метод возвращает значение, вы можете получить возвращенное значение, вызвав селектор.

Но это не значит, что вы можете вернуть значение из метода действия.

Specifi c ответ для вашего случая

Нет, методы действия вызываются изнутри iOS, а iOS игнорирует возвращаемое значение. (В некоторых случаях вызов метода с возвращаемым значением сделает ваше приложение cra sh.)

Если вам нужно установить cell.button.tag = 5, вам может потребоваться записать его в sampleFunction явно:

    @objc func sampleFunction(_ gestureRecognizer: MyTapGesture) {
        let button = gestureRecognizer.view as! UIButton
        button.tag = 5
        //...
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...