2014-03-14 62 views

回答

1

單元格一次呈現一個單獨,並且只有當它們需要可見時。一個tableview只包含足夠的單元格來顯示可顯示的內容。沒有其他單元格被渲染。當人們從頂部滾動時,它將被回收並重新用於將要從底部滾動的那個。

根據tableview的大小和單元格的大小,具有500行的表可能永遠不會有超過10-12個單元格在任何給定時間呈現。

0

只有當它在tableView中可見時纔會呈現單元格,並且消失單元格將放入一個容器中,該容器可以重複用於下一個出現的單元格,其格式爲CellIdentifier。所以只有可見將會在tableView中呈現。並且內存將由單元花費,具體取決於tableview中可見的單元數以及您在cellForRowAtIndexPath中使用了多少個CellIdentifier來創建新單元。

以下步驟對細胞的生命週期:

  1. 呼叫- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  2. 呼叫dequeueReusableCellWithIdentifiercellForRowAtIndexPathCellIdentifier檢查可重複使用的電池。
    如果返回零,您應該創建一個帶有CellIdentifier的單元格。
    如果不是零,您可以重用沒有alloc的單元。單元格將調用prepareForReuse,您可以重寫自定義單元格中的方法來重置UI。
  3. 獲取單元對象後,將調用- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath,您可以在顯示單元對象之前對其進行自定義。
  4. 滾動tableview時,單元格從tableView中消失。該單元格將被放入緩存容器中,並準備好在下一次出現時重新使用,即當delegate調用dequeueReusableCellWithIdentifier時與CellIdentifier相同。
+0

感謝你們所有人的回答 – user2007454