iphone - UITableView InsertRows (insertRowsAtIndexPaths) 仅对两个部分之一进行动画处理

标签 iphone ios cocoa-touch uitableview xamarin.ios

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

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

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

  • 第 0 节
    • 第 [0,0] 行
  • 第 1 节
    • 第 [1,0] 行
  • 第 2 节
    • 第 [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 的回答,这是不必要的。

最佳答案

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

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

关于iphone - UITableView InsertRows (insertRowsAtIndexPaths) 仅对两个部分之一进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352064/

相关文章:

iphone - UITabBarController 是如何工作的?

ios - 在 iOS 中使用 AVFoundation Framework 来自相机的视频帧?

iphone - 使用 Game Center 登录在远程服务器上引导登录

iphone - 清理 iPhone 应用程序内存的最佳实践?

iphone - 如何在我的整个 xml 字符串中将双引号转义为\"?

iphone - 线程 1 : EXC_BAD_ACCESS (Code = 1, 地址 = 0x30000008) 生成问题

iphone - ASIHTTPRequest - 设置忽略缓存/代理

iOS7 呈现类似于 MFMailComposeViewController for iPad 的 childViewController

objective-c - 自定义导航栏样式 - iOS

iphone - 覆盖 UITableView 上的滑动手势