1

我正在使用 MonoTouch,并且我有一个没有被重用的自定义单元格视图。

  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;
}
4

1 回答 1

1

一些笔记

您是否为每个单元使用控制器?

那么,你在哪里申报的_cellId呢?

最后,注意cell.Tag = Environment.TickCount;Environment.TickCountcall 可能会导致问题,因为它可能足够快以创建相等的标签。

这么说,我认为您并不需要每个单元格都需要一个控制器(如果您使用它的话)。您可以创建一个自定义类来扩展UITableViewCell并按原样使用它。如果您使用 xib 界面,我真的建议阅读文章created-custom-uitableviewcells-with-monotouch-the-correct-way

希望能帮助到你。

于 2012-06-02T15:15:28.053 回答