0

在表更新之前,我的表数据源只有一个部分,一行:

  • 第 0 节
    • 行 [0,0]

更新后,数据源又返回两个部分,每个部分只有一行:

  • 第 0 节
    • 行 [0,0]
  • 第 1 节
    • 行 [1,0]
  • 第 2 节
    • 行 [2,0]

我使用以下代码为表格更新设置动画:

// 更新表数据源,不重新加载表
更新表();       

TableView.BeginUpdates();

// 插入第 1 节和第 2 节
TableView.InsertSections(NSIndexSet.FromNSRange(new NSRange(1, 2)), UITableViewRowAnimation.Fade);

// 插入两个新行,每个新部分一个(行 [1,0] 和 [2,0])
TableView.InsertRows(new NSIndexPath[] { NSIndexPath.FromRowSection(0, 1), NSIndexPath.FromRowSection(0, 2) }, UITableViewRowAnimation.Fade);

TableView.EndUpdates();

但是,只有第 1 部分及其行是动画的。第 2 节(第 [2,0] 行)立即出现并且不会移动/淡出一点。我还检查了切换的“慢速动画”。

这段代码有什么问题?

编辑:我忘了提,如果我省略了InsertRows电话,问题也存在,根据山姆的回答,这是不必要的。

4

2 回答 2

2

找出原因:UITableViewSource每次UpdateTable()调用我都在创建一个新实例。这一切都很好,除了动画改变表格部分和行时的一些细节。

当我更改代码以重用UITableViewSource实例时,一切都按预期工作。

于 2012-04-27T16:48:40.160 回答
1

插入部分时,您不需要为各个行设置动画。只需调用插入部分代码。同样,在删除部分时,您也不需要删除其中的行。

于 2012-04-27T15:35:26.443 回答