2010-12-02 75 views
9

我有一個具有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爲viewToUpdate類型...但當然的UITextField和的UILabel將不符合該協議......

回答

16

嘗試只是投放它作爲一個id:

if ([self.viewToUpdate respondsToSelector:@selector(setText:)] && !self.newAnswer) 
    [(id)self.viewToUpdate setText:[[self.choices objectAtIndex:indexPath.row] text]]; 
+0

謝謝!不能相信我沒有想到這一點。很簡單!雖然(id)需要放在第二行,而不是第一行。 – GendoIkari 2010-12-02 23:24:05

相關問題