2012-06-01 91 views
1

我正在使用MonoTouch,並且我有一個未被重用的自定義單元視圖。重複使用UITableViewCell不起作用

  1. 我已經嘗試設置IBUIReuseIdentifier
  2. 我一直在使用字符串和NSString_cellId
  3. 我試圖重建項目嘗試。
  4. 有趣的是,我有其他自定義單元格工作正常,但我創建的任何新的沒有得到重用。我不確定接下來要看什麼。

謝謝。

public override UITableViewCell GetCell (UITableView tableView, 
             NSIndexPath indexPath) 
{   

    UITableViewCell cell = tableView.DequeueReusableCell(_cellId); 
    LibraryItem item = _items[indexPath.Row]; 
    LibraryCellView cellController = null; 

    if (cell == null) 
    { 
     cellController = new LibraryCellView(); 
     cell = cellController.Cell; // cellController.Cell; 

     cell.Tag = Environment.TickCount; 

     _cellControllers[cell.Tag] = cellController; 
     Console.WriteLine("Cell New"); 
    } 
    else 
    { 
     cellController = _cellControllers[cell.Tag]; 
     Console.WriteLine("Cell Reused"); 
    } 

    cellController.Name = item.Name; 
    cellController.Date = item.CreatedDate.ToShortDateString(); 
    cellController.Shared = item.IsShared ? "Shared":""; 
    cellController.Count = item.Count.ToString(); 
    cellController.ImageCoverId1 = item.CoverPictureId1;  

    return cell; 
} 
+2

您不顯示實際創建單元的代碼 - 當您創建新單元時,是否使用_cellId作爲標識符?如果你不是,那麼DequeueReusableCell()永遠不會找到匹配的單元格,並且總是會導致你創建一個新單元格。 – Jason

回答

1

的一些注意事項

你使用控制器每個細胞?

然後,你在哪裏申明_cellId?最後請注意cell.Tag = Environment.TickCount;。呼叫可能會導致問題,因爲它可能足夠快以創建相同的標記。

說到這一點,我認爲你並不是真的需要每個單元的控制器(如果你使用它的話)。您可以創建一個自定義類,它可以擴展UITableViewCell並按原樣使用它。如果你使用xib接口,我真的建議閱讀後creating-custom-uitableviewcells-with-monotouch-the-correct-way

希望它有幫助。