Вы должны передать UIControl
, так как это суперкласс для элементов управления.
Затем в своем коде вы должны использовать такие методы, как respondsToSelector:
, чтобы определить, может ли переданный элемент управления выполнять то, что вам нужно.
Вы также можете проверить тип его класса, используя isKindOfClass:
или isMemberOfClass
.
Как только вы узнаете, с каким объектом вы имеете дело, вы можете набрать его, чтобы сэкономить при печати, и удалить все предупреждения о том, что не отвечает на селекторы, например:
// decided that it's a UITextField after using `respondsToSelector:` or `isKindOfClass:`
UITextField *aTextField = (UITextField *)control;
Этот метод известен как "типизирование утки" - поскольку он похож на выражение "если он ходит как утка и звучит как утка, то, вероятно, это будет утка".