UIWindow 在方法完成之前不显示

Posted

技术标签:

【中文标题】UIWindow 在方法完成之前不显示【英文标题】:UIWindow not displaying until method complete 【发布时间】:2016-10-20 18:11:10 【问题描述】:

我正在尝试显示一个视图,因为该方法需要几秒钟才能完成。但是,直到整个方法完成,加载的 UIWindow 才真正成为关键和可见的。知道这里发生了什么吗?

// this line creates a uiwindow with view controller as root view controller, an activity indicator, and a label and makes the loading view key and visible
[XSELLoadingView presentLoadingViewWithTitle:@"Generating Report"]; // use loading view for long times

// these three lines process a lot of data and present the view on the main window
XSELCount *startCount = [[XSELCount counts] objectAtIndex:[self.startingPick selectedRowInComponent:0]];
XSELCount *endCount = [[XSELCount counts] objectAtIndex:[self.endingPick selectedRowInComponent:0
[self.navigationController pushViewController:[XSELReportView viewWithReportData:[XSELReportData compareStartCount:startCount toEndCount:endCount]] animated:false];   

// this line makes the main view key and visable 
[XSELLoadingView dismissLoadingView];

【问题讨论】:

只是为了澄清 XSELLoadingView 确实显示了一个带有视图的窗口,而不仅仅是当前窗口顶部的视图。 您需要在后台进行长处理。 【参考方案1】:

在这个里面应用你的任务。

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    //Do background work
    dispatch_async(dispatch_get_main_queue(), ^
        //Update UI
    );
);

【讨论】:

以上是关于UIWindow 在方法完成之前不显示的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UIwindow 不显示

第二个 UIWindow 不显示(iPad)

如果 UIWINdow 的子视图,UIButton 单击不起作用

作为 UIWindow 子视图添加的 UIView 不响应点击

UIWindow 的 rootViewController 属性

通过 UIWindow 从继承自 NSObject 的类以模态方式在整个应用程序顶部显示 UIWebView?