1

在情节提要中,我有一个 TableViewController 和一个 DetailViewController 的 push segue。TableVC 嵌套在导航控制器中。我在情节提要中将 DetailViewController 视图设置为黑色背景色。DetailVC 还包含一个加载到其 viewDidLoad 中的 webview。我在 TableVC 的 prepareForSegue 中将 webview 的 URL 传递给 DetailVC。

在点击单元格时执行 push segue 时,我会遇到一些奇怪的行为。紧接着执行 segue 后,DetailVC 的视图背景颜色会短暂显示为白色(导航栏显示正常)。然后视图的背景颜色变为黑色(在情节提要中设置为黑色)。然后 webview 加载。我不确定是什么导致了 DetailVC 的视图背景颜色延迟。

这是我的 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 颜色显示为白色,无法修改。

4

2 回答 2

2

如果您从未解决过问题,您绝对应该听 Vito 关于主线程的回答。但还要将以下内容添加到您的代码中:

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

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

于 2013-05-24T15:54:04.443 回答
0

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

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

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

于 2012-11-09T23:11:27.703 回答