在加载视图之前,推送segue会短暂显示空白屏幕

时间:2012-11-09 18:55:10

标签: objective-c ios uitableview storyboard segue

在storyboard中,我有一个TableViewController和一个推送到DetailViewController的segue。 TableVC嵌套在导航控制器中。我在Storyboard中将DetailViewController视图设置为背景颜色为黑色。 DetailVC还包含一个webview,它在viewDidLoad中加载。我将webview的URL传递给TableVC的prepareForSegue中的DetailVC。

当点击单元格时执行push segue时,我会遇到一些奇怪的行为。执行segue后,DetailVC的视图bg颜色立即变为白色(导航栏显示正常)。然后视图的bg颜色变为黑色(在故事板中设置为黑色)。然后加载webview。我不确定导致DetailVC视图bg颜色延迟的原因。

这是我的prepareForSegue方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Radio Show Playback"])
    {
        RadioShowPlaybackVC *radioShowPlaybackVC = segue.destinationViewController;
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        radioShowPlaybackVC.radioShowData = self.radioShows[indexPath.row];
    }
}

编辑:它与网页视图有关。当我删除webview时,segue会根据需要进行转换。

修改:我当前的解决方法是隐藏webview,直到加载为止。未加载时,bg颜色显示白色,无法修改。

2 个答案:

答案 0 :(得分:2)

如果您从未解决过问题,那么您应该听听Vito关于主线程的答案。但是也要在代码中添加以下内容:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];

如果它仍然显示白色,只需将clearColor更改为blackColor。

答案 1 :(得分:0)

我猜你执行了loadRequest,loadHTMLString:baseURL:或loadData:MIMEType:textEncodingName:baseURL:for viewDidLoad中的UIWebView

segue过渡和UIWebView都将使用相同的主线程来完成他们的任务,因此“白色”背景暂时显示为将默认“白色”背景更改为黑色背景的步骤由于活动而暂时暂停UIWebView中。

尝试在 viewDidAppear 中加载UIWebView,因此当segue转换完成后,UIWebView将开始使用主线程。