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 = [單元格內容];」這個問題有答案嗎?
雖然這掩蓋了代碼的含義,但它起作用。有什麼辦法可以避免這種情況? – JoBu1324
不適用於這種情況。對於UITextView和UITextField都符合的[UITextInputTraits協議](http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextInputTraits_Protocol/Reference/UITextInputTraits.html)中的方法,你可以投到'id'而不是'id'來使你的意圖更清晰。 –
jtbandes