iOS-在UITableView上显示覆盖

iOS-在UITableView上显示覆盖,ios,uitableview,uiactivityindicatorview,grand-central-dispatch,Ios,Uitableview,Uiactivityindicatorview,Grand Central Dispatch,我正在从web下载数据,然后在UITableView上显示。因为我想要一个响应性强的用户界面,所以我正在使用GCD进行后台下载。因此,在下载数据时,会显示一个空的UITableView,这并不漂亮。除此之外,IB Sping中还有一个UIActivityIndicatorView设置 我想做的是不显示空表,而是显示一个带有UIActivityIndicator视图的灰色屏幕 到目前为止,我掌握的代码如下: dispatch_async(dispatch_get_global_queue(0, 0

我正在从web下载数据,然后在UITableView上显示。因为我想要一个响应性强的用户界面,所以我正在使用GCD进行后台下载。因此,在下载数据时,会显示一个空的UITableView,这并不漂亮。除此之外,IB Sping中还有一个UIActivityIndicatorView设置

我想做的是不显示空表,而是显示一个带有UIActivityIndicator视图的灰色屏幕

到目前为止,我掌握的代码如下:

dispatch_async(dispatch_get_global_queue(0, 0), ^{

    NSArray *downloadedCareerIds = [CareersParser idsFrom:@"web"];
    NSArray *diskCareerIds = [CareersParser idsFrom:@"disk"];

    BOOL equalIds = [downloadedCareerIds isEqualToArray:diskCareerIds];

    if (!equalIds) {

        DLog(@"ids not equal");

        dispatch_async(dispatch_get_main_queue(), ^{
            /* Send UI updates back to the main thread. */

            // I think here would be a good idead to insert the gray view over the table

            [loadingIndicator startAnimating];
            // Do GUI stuff on the main thread ...
            [loadingIndicator stopAnimating];
            // Remove the gray view?

        });
    }
});

只需使用UITableView的边界创建一个灰色视图,并将其添加为tableView的子视图。加载完成后删除灰色视图。

使其正常工作,但在添加的子视图显示在tableview上之前会有一点延迟,因此您会在半秒钟内看到一个空表,然后会看到加载屏幕。您是否在问题中有注释的地方添加灰色视图?如果是这样,并且希望灰色视图不会如此延迟,则应在viewDidLoad中将灰色视图添加到tableview中。您可以将其保存到实例变量或属性,具体取决于您正在执行的操作,然后像以前一样删除它。