在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颜色显示白色,无法修改。
答案 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将开始使用主线程。