Iphone 在每次回调时刷新/重新加载UITableView

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

在我的iOS5应用程序中,我有一个UITableView,它可以根据progressLabelArray中存储的NSString值显示单元格。我已经注册了一个来自较低层的回调,我在一个C函数中接收它们,在这里我通过对self的引用调用UI更新方法

    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太好了。。。然后添加您的答案并接受它