Iphone 在每次回调时刷新/重新加载UITableView
在我的iOS5应用程序中,我有一个UITableView,它可以根据progressLabelArray中存储的NSString值显示单元格。我已经注册了一个来自较低层的回调,我在一个C函数中接收它们,在这里我通过对self的引用调用UI更新方法Iphone 在每次回调时刷新/重新加载UITableView,iphone,objective-c,uitableview,ios5,Iphone,Objective C,Uitableview,Ios5,在我的iOS5应用程序中,我有一个UITableView,它可以根据progressLabelArray中存储的NSString值显示单元格。我已经注册了一个来自较低层的回调,我在一个C函数中接收它们,在这里我通过对self的引用调用UI更新方法 static void callback_handler(int nCode) { [refToSelf updateProgressView:nCode]; } -(void) updateProgress
static void callback_handler(int nCode) {
[refToSelf updateProgressView:nCode];
}
-(void) updateProgressView:(int32_t) nCode
{
NSString *status = nil;
status = [self progressUpdateToString:nCode];
[self.progressLabelArray insertObject:status atIndex:0];
[self.progressTableView reloadData];
[self.progressTableView setNeedsDisplay];
}
我想,由于回调来自同一个UI线程,因此可能不需要performSelectorOnMainThread
我的问题是,表视图只有在整个操作完成时才会刷新,显示最后的回调值。是否有一种方法可以强制UI在每次回调后刷新?回调的速度可能相对较快。通过在单独的线程中运行进度代码解决了这个问题。回调来自一个seprate线程,在那里我更新了我的主线程UI线程。我猜UI线程没有得到任何更新UI的周期 把你的 tableView.reloadData 在下面的程序块中调用,你的tableview会像在实时应用程序中一样刷新,不会出现任何问题,也不会刷新滚动条 对于swift 3:
DispatchQueue.main.async()
{
tableView.reloadData()
}
目标C:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Background work
[tableView reloadData];
});
如果回调太快,那么您如何观察数据中的更改,即为什么只有最后一个更改可见首先,它们不会太快而不被注意,然后当我调试并在各种回调后暂停时,我只看到视图上的初始值。仍然无法解决问题。请我亲爱的iOS朋友们帮忙!!!把你的密码寄到rathore619@gmail.com.That太好了。。。然后添加您的答案并接受它