2017-08-09 64 views
0

我有一個UITableView,其中有不同類型的單元格。常見的方法是根據數據對象具有不同的UITableViewCell並重用它們。如何重用UITableViewCell用於不同類型的單元格

現在,我有9種不同類型的數據對象。但我的觀點與Facebook按鈕,評論按鈕,用戶圖片和用戶名等Facebook提要相似。只有中心視圖根據數據對象而變化。

我的問題是,我應該使用9種不同類型的單元格與這些元素的公共類,或者我應該使用一個單元格並在創建單元格時添加中央視圖?

目前我的方法是使用一個單元格並添加中心視圖。如果我們採用這種方法,UITableViewCell會被重新使用嗎?

+0

細胞會被重用,不管你已經在你的所作所爲 –

+0

邏輯是你的,我應該使用9種不同類型的細胞,並根據條件,單細胞中使用的相同條件以及基於條件改變高度,我們不知道您的項目包含什麼,自定義 –

回答

1

如果您使用reuseIdentifier:初始化單元並在表視圖上使用dequeueReusableCellWithIdentifier:方法,則表格視圖單元格將始終重新使用。

至於是否使用單個UITableViewCell的子類或幾個,取決於您的9種內容類型之間有多少差異。如果它們都包含相同的UI元素,則使用1個子類是有意義的。否則,只要您爲每個子類傳入不同的唯一標識符,您就可以創建多個子類,並仍然可以重複使用dequeueReusableCellWithIdentifier:中的單元格。每個子類都將獨立重用。

這是你的cellForRowAtIndexPath:可能是什麼樣子,如果你使用多個小區類別:如果您使用tableView.dequeueCell

NSString *primaryCellID = @"PrimaryCellID"; 
NSString *secondaryCellID = @"SecondaryCellID"; 

if (someCondition) { 
    CustomTableViewCell1 *cell = [tableView dequeueReusableCellWithIdentifier:primaryCellID]; 

    if (!cell) { 
     cell = [[CustomTableViewCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:primaryCellID]; 
    } 

    return cell; 
} 
else { 
    CustomTableViewCell2 *cell = [tableView dequeueReusableCellWithIdentifier:secondaryCellID]; 

    if (!cell) { 
     cell = [[CustomTableViewCell2 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:secondaryCellID]; 
    } 

    return cell; 
} 
+0

這種方法很好。如果我在單元格中有一個頁腳,並且所有單元格都有相同和註釋按鈕,那麼情況如何。如果我使用不同的單元格,我如何爲這些元素編寫通用代碼?如果我使用同一個單元格,每當單元格出隊時,是否可以生成內容並在單元格內執行'addsubview:'? – Sowndharya

相關問題