在重新加载UITable视图之前,通过GCD创建多个UITableViewCell

时间:2015-04-02 12:47:15

标签: ios uitableview grand-central-dispatch uicollectionviewcell

dispatch_queue_t  backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);//
            dispatch_async(backgroundQueue, ^(void) {
                NSLog(@"BackgroundQueue-makeUpcomingCell");
                // storeLiveAndUpcomingMatches
                [[TVStoredData sharedInstance] makeRunnningCell];
                [[TVStoredData sharedInstance] makeUpcomingCell];
                dispatch_sync(dispatch_get_main_queue(),^{
                    NSLog(@"MainQueue-makeUpcomingCell");
                    [tblView ReloadData];
                });
            });

我正在尝试上面的代码,在重新加载Table视图之前,通过GCD创建没有主线程的多个单元格。这些单元格是成功创建的,但是当它们在cellforRowatIndexpath中返回时,只显示单元格的图像视图,而不显示任何标签,并且按钮在单元格中可见。

我在接下来的15-20秒内滚动桌子,突然间所有标签和按钮开始可见。

似乎在数组中存储单元格需要启动其控制器。

2 个答案:

答案 0 :(得分:0)

1)您无法在其他主题中更新UI。

2)您正在将强变量用于块中。

答案 1 :(得分:0)

除非另有说明,否则所有UIKit(这肯定包括UITableViewCell)都应该被认为是#34;主线程。"如果你要做一些昂贵的工作来生成单元格(下载资源,渲染图像等),你可以使用GCD将该工作发送到后台,但是应该自己构建UITableViewCell个实例在主线上。