我必须使用线程同时重新加载uitableview。我已经使用两个线程从Web加载数据。是否可以使用线程重新加载tableview?还有其他方法吗?
答案 0 :(得分:1)
同时到底是什么?重新加载需要时间,您需要在后台重新加载支持数据模型,同时仍然显示能够向用户显示数据吗?
如果是这样的话,我会:
重要的是更新真实模型属性,并请求在主线程上重新加载表视图的数据。否则会有一个时间段,表视图可以请求查看不再可用的数据模型项。
实现将是这样的:
-(void)releadData;
{
[self performSelectorInBackground:@selector(reloadDataInBackground)
withObject:nil];
}
-(void)reloadDataInBackground;
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
MyDataModel* model = nil;
// Do what is needed to setup model.
[self performSelectorOnMainThread:@selector(updateModelOnMainThread:)
withObject:model
waitUntilDone:NO];
[pool release];
}
-(void) updateModelOnMainThread:(MyDataModel*)model;
{
self.model = model;
[self.tableView reloadData];
}
答案 1 :(得分:0)
与什么同时?
所有UIKit都必须在主线程上完成,因此您可以使用后台线程与互联网通信或进行自己的处理,但任何与UITableView的实际交互都必须在主线程上。