2011-07-09 61 views
0

場景:如何避免編譯器警告處理時的UITextField一樣的UITextView

我有一個包含的UITextField財產和財產的UITextView兩個分別UITableViewCells。顯然,這兩個屬性有共同的屬性,如「文本」和「文字顏色」

目的:

罔分配一個字符串的UITextField/UITextView中的文本屬性不提高編譯器警告。可以做到嗎?

下面是我在做什麼的例子:

目前,我這樣做是爲了避免編譯器警告:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
UITextField *textField; 
UITextView *textView; 
switch (indexPath.section) { 
    case SectionDescription: 
     textField = (UITextField *)[(TextFieldCell *)cell contents]; 
     textField.text = self.plan.description; 
     break; 

    case SectionNotes: 
     textView = (UITextView *)[(TextViewCell *)cell contents]; 
     textView.text = self.plan.notes; 
     break; 
} 

但我希望做一些更接近這個沒有編譯器警告:

NSString *contents = [self getContents]; 

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
UIView *textView = (?? *)[(?? *)cell contents]; 
textView.text = contents; 

有沒有一個標準的方法來做到這一點?我知道如果兩個對象符合一個通用的協議,我可以做一些像「UIView * textView = [單元格內容];」這個問題有答案嗎?

回答

0

嘗試使用[(id)textView setText:contents]

+0

雖然這掩蓋了代碼的含義,但它起作用。有什麼辦法可以避免這種情況? – JoBu1324

+0

不適用於這種情況。對於UITextView和UITextField都符合的[UITextInputTraits協議](http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextInputTraits_Protocol/Reference/UITextInputTraits.html)中的方法,你可以投到'id '而不是'id'來使你的意圖更清晰。 – jtbandes

相關問題