UITableView insertRowsAtIndexPaths:WithRowAnimation不冻结用户界面
我试图了解什么是最好的做法,当我使用UITableView
与大量的行插入时,表是可见的。
这是我的行为:
我有一个UITableView
和一个线程,试图插入一个数据到这个表中。 我认为做一个[UITableView reloadData]
是性能方面的一个糟糕的解决scheme,我知道UIKit
操作是在主线程进行,因此,当数据源更新完成时,我试图发送一个NSNotification
使UITableView
更新操作(beginUpdate – insertRowAtIndex – endUpdate)在主线程上,但是这种技术冻结了用户界面。 我必须使用1000+以上的行数。
有人已经解决了这个问题? 是否可以使用GDCasynchronous和同步? 如果是的话,怎么样? 提前致谢。
你是否这样尝试:
dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView beginUpdates]; [self.tableDatalist insertObject:obj atIndex:index]; [self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationRight]; [self.tableView endUpdates]; });