我現在碰到過這個問題兩次,並且很想知道是否有正確的方法讓下面的例子工作。我知道做同樣的事情還有其他的方式/解決方法,但我想知道爲什麼編譯器不能識別我的演員,如果我在這裏失去了明顯的東西。Objective-C中的自定義類和鑄造條件語句
假設我有兩個帶有不同風格頭部視圖的表格視圖,我需要提供。 SectionHeaderViewA
是一個UIView子類,具有自定義屬性textLabelA
,SectionHeaderViewB
也是一個具有自定義屬性textLabelB
的UIView子類。
在該方法中:
- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
id headerView;
if (tableView.tag == TAG_A)
{
headerView = (SectionHeaderViewA*)[[SectionHeaderViewA alloc] init];
headerView.textLabelA = ... // I am unable to access the custom property here even after casting (SectionHeaderViewA*) above.
} else if (tableView.tag == TAG_B) {
headerView = (SectionHeaderViewB*)[[SectionHeaderViewB alloc] init];
headerView.textLabelB = ... // Same as above, even after casting the custom property is not recognised
}
return headerView;
}
即使鑄造(SectionHeaderViewA *)和(SectionHeaderViewB *)我headerView伊娃後,我仍然無法訪問他們各自的自定義屬性。這就像編譯器仍然將headerView
視爲未知/ id類型,但爲什麼?
你得到的錯誤信息是什麼? – sidyll 2011-12-23 00:14:11
你導入了兩個頭文件嗎? – 2011-12-23 00:17:47
Rog,當您檢查參數「tableView」的類型時,調試器是否識別表視圖的特定類型? – Ushox 2011-12-23 00:19:47