在后台更新UITableView的数据会中断动画

Ric*_*ick 2 objective-c uitableview ios

我有一个UITableViewController,它应该在后台获取数据,然后刷新UITableView.但是,当我在后台运行更新方法时,它会破坏整个应用程序中的所有过渡动画(将视图控制器推送到导航堆栈时的幻灯片).奇怪的是,完全相同的模型适用于与此非常类似的其他类.这是我用于后台更新的电话:

[self performSelectorInBackground:@selector(updateData) withObject:nil];
Run Code Online (Sandbox Code Playgroud)

但是这有效,但当然不是在后台完成的:

[self updateData];
Run Code Online (Sandbox Code Playgroud)

最后运行的方法:

- (void)updateData{
    updating = YES;
    [progress show:YES];
    dataSource = [[NetworkHandler sharedInstance:self] getRaces];
    [progress hide:YES];
    updating = NO;
    [self.tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

更新标志不以任何方式尝试信号量,仅仅是在用户在视图之间来回切换的情况下确保视图不会更新两次的方法.;)

Fra*_*ano 5

[self.tableView reloadData];看起来它可能会导致某种线程问题.UI的所有更新都应在主线程中完成.所以这应该工作:

[self.tableView performSelectorOnMainThread:@selector(reloadData)];