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