プロパティとしてUIViewを持つクラスがあります。時には私はUILabelを渡します。時にはUITextField。私が渡すかどうかに関わらず、クラスにテキストを設定させたい。現在、私は働く、これをやっています:UIViewの警告を停止する方法は、セレクタに応答しない可能性があります
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にキャストすることができますが、これは苦痛になります。さらに多くの種類のビューがある場合は、私はそれぞれのコードのいくつかの行を追加する必要があります。
私は
ありがとう!私はそれを考えなかったとは信じられません。とても簡単! (ID)は、最初の行ではなく、2行目に置く必要があります。 – GendoIkari
よろしくお願いします。ちょうど変更を加えました。 –
オブジェクトをテストして、それが期待どおりのクラスであることを確認してから、その特定のクラスにキャストし、直接idにキャストする方がよいでしょう。 self.viewToUpdateがこれまでとは異なるクラスであった場合、少なくともクラッシュを避けることができます。私がrespondsToSelectorをテストしているので、 – Ryan