2014-06-11 132 views
0

下面的函數開始創建從零到n的單元格,並從模型中檢索內容。我在表格中有幾個單元格,其中有靜態內容,我希望函數在下面忽略它們,並從第n開始插入新數據。我將如何做到這一點?換句話說,我該如何返回已存在的單元格niOS更改表格視圖中的特定單元格

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

+0

可以忽略所需的細胞內 - (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath檢查indexPath.section和indexPath.row – Dimentar

回答

1

方法tableView:cellForRowAtIndexPath需要用於滾動,因爲的tableView不加載的所有單元在一次。

如果你想重新加載你的tableView的一部分,你可以使用方法reloadRowsAtIndexPaths:withRowAnimation:reloadSections:withRowAnimation:。這將僅重新加載指定的單元格。

如果您有性能問題,並且不希望在每次tableView滾動時加載靜態單元格,則可以在創建它們後將它們存儲在屬性中,並且只返回它們。它看起來有點像這樣:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    switch (indexPath.row) { 
     case 0: 
      //Static cell 
      if (self.staticCell == nil) { 
       self.staticCell = [UITableViewCell new]; //Instantiate properly here 
       //Customize cell 
      } 
      return self.staticCell; 
      break; 
     case 1: 
      // Other cells normally 
      break; 
    } 
} 
+0

實際上,我需要防止先改變幾個單元格,然後再填充一些內容,但似乎我會用交換功能重新填充它們。 –

+0

如果單元格已經創建好了,它只會在方法中返回,它根本不會被修改。如果該屬性爲零,該方法將僅填充單元格。如果它不是唯一的返回。 – pedros

+0

好的,我對達到已經創建的單元格感到困惑,但我們將它們定義爲屬性。現在沒問題。 –

0

在僞代碼:

if (indexPath.row == 0) 
    return some static cell; 

else if (indexPath.row == 1) 
    return some other static cell; 

else 
    configure cell N with data[N-2]; 
+0

我已經有了一些內容的這些單元格,所以我不想返回新的單元格。 –

相關問題