У меня есть класс, имеющий свойство UIView. Иногда я передаю UILabel; иногда UITextField. Независимо от того, что я передаю, я хочу, чтобы класс установил текст. В настоящее время я делаю это, и это работает:
if ([self.viewToUpdate respondsToSelector:@selector(setText:)] && !self.newAnswer)
[self.viewToUpdate setText:[[self.choices objectAtIndex:indexPath.row] text]];
Проблема в том, что это дает предупреждение, потому что, хотя я проверяю RespondsToSelector
, Xcode не знает, что мой UIView ответит на setText:
. Как мне удалить это предупреждение?
Я знаю, что могу специально проверить, есть ли оно? sa TextField или Label, а затем приведение к TextField или Label, соответственно, но это будет проблемой, и если у меня когда-либо будет больше типов представлений, мне придется добавить еще несколько строк кода для каждого из них .
Я подумал о создании своего собственного протокола, а затем, чтобы мой класс имел id в качестве типа для viewToUpdate ... но, конечно, UITextField и UILabel не соответствовали бы этому протоколу ...