在重新渲染屏幕之前,UITableView值不会呈现

时间:2012-10-11 22:07:42

标签: ios uitableview

我有一个带有详细标签的表格视图。此标签由我在connectionDidFinishLoading函数中从JSON调用填充的实体填充。问题是cellFromRowAtIndexPath函数在connectionDidFinishLoading函数之前触发,所以在我下拉重绘页面的屏幕之前,我没有看到表视图中的值。我已尝试在这两个函数的末尾刷新表视图,但这看起来不起作用。有人可以告诉我为什么会发生这种情况以及如何解决它。

What the initial load looks like

What the refreshed view looks like after I pull down on the screen

4 个答案:

答案 0 :(得分:1)

您必须在connectionDidFinishLoading结束时重新加载表数据。 两种方式:

第一个:

[tableView reloadData];

第二个:

NSArray* rows = [tableView indexPathsForVisibleRows];
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:rows withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];

答案 1 :(得分:1)

你在主线程中调用reloadData吗? connectionDidFinishLoading听起来像是在后台线程中运行。

答案 2 :(得分:0)

填充后,请在tableView上调用reloadData

答案 3 :(得分:0)

这应该这样做。必须从主线程

执行所有UI更新和操作
dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
});