UITableView InsertRows(insertRowsAtIndexPaths)仅动画两个部分中的一个

时间:2012-04-27 13:59:40

标签: iphone ios cocoa-touch uitableview xamarin.ios

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

  • 第0节
    • 行[0,0]

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

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

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

// update the table data source, without reloading the table
UpdateTable();       

TableView.BeginUpdates();

// insert sections 1 and 2
TableView.InsertSections(NSIndexSet.FromNSRange(new NSRange(1, 2)), UITableViewRowAnimation.Fade);

// insert two new rows, one for each new section (rows [1,0] and [2,0])
TableView.InsertRows(new NSIndexPath[] { NSIndexPath.FromRowSection(0, 1), NSIndexPath.FromRowSection(0, 2) }, UITableViewRowAnimation.Fade);

TableView.EndUpdates();

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

此代码有什么问题?

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

插入部分时,无需为各个动画设置动画。只需调用插入部分代码。此外,类似于删除部分时,您不需要删除其中的行。