我試圖解決如何在iOS 6中使用UITableView
的新方法時設置UITableViewCellStyle
。使用iOS 6時UITableViewCell的設置風格UITableView dequeueReusableCellWithIdentifier:forIndexPath:
以前,在創建UITableViewCell
時,我會更改UITableViewCellStyle
枚舉,以在調用initWithStyle:
時創建不同類型的默認單元格,但從我可以收集的內容中,不再是這種情況。
蘋果文檔UITableView
規定:
返回值: 與相關聯的重用標識符一個UITableViewCell對象。此方法始終返回有效的單元格。
討論: 出於性能原因,一個表視圖的數據源通常應該重用的UITableViewCell對象時將其分配細胞在其的tableView行:的cellForRowAtIndexPath:方法。表視圖維護數據源標記爲可重用的UITableViewCell對象的隊列或列表。當被要求提供表格視圖的新單元格時,從數據源對象調用此方法。此方法將取出現有單元格(如果有),或根據您之前註冊的類或nib文件創建新單元格。
重要:調用此方法之前的方法:你必須註冊使用registerNib類或筆尖文件:forCellReuseIdentifier:或的registerClass:forCellReuseIdentifier。
如果您爲指定的標識符註冊了一個類並且必須創建一個新的單元格,則此方法通過調用其initWithStyle:reuseIdentifier方法來初始化該單元格。對於基於筆尖的單元格,此方法從提供的nib文件加載單元格對象。如果現有單元可供重用,則此方法將調用單元的prepareForReuse方法。
這是我的新cellForRowAtIndexPath
看起來如何實施新方法後:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell_identifier";
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
return cell;
}
我到目前爲止的代碼工作正常,但總是返回默認樣式。如何更改此設置,以便我可以使用其他樣式創建單元格,例如UITableViewCellStyleDefault
,UITableViewCellStyleValue1
,UITableViewCellStyleValue2
和UITableViewCellStyleSubtitle
?
我不想要子類UITableViewCell
,我只是想改變默認類型,因爲我可以在iOS 6之前做。看起來很奇怪的是,蘋果會提供增強的方法,但用最少的文檔來支持它們的實現。
有沒有人掌握了這個,或遇到類似的問題?我努力尋找任何合理的信息。
我開始認爲這確實是這種情況。這不是一個主要的問題,但不得不繼承'UITableViewCell'以獲得其他默認樣式是一件很痛苦的事情,因爲它只會產生不必要的文件。感謝您的評論並確認我的懷疑。 – CaptainRedmuff
不要忘記,而不是子類化,你可以使用舊的iOS5方法,這仍然有效。這樣你可以初始化你想要的任何類型的單元格樣式。見另一個答案。 – SpacyRicochet