1

ストーリーボードには、TableViewControllerとDetailViewControllerへのプッシュセグエがあります。TableVCはnavコントローラーにネストされています。ストーリーボードでDetailViewControllerビューを背景色の黒に設定しました。DetailVCには、viewDidLoadにロードされるWebビューも含まれています。TableVCのprepareForSegueでWebビューのURLをDetailVCに渡します。

セルをタップするときにプッシュセグエを実行すると、奇妙な動作が発生します。セグエが実行された直後、DetailVCのビューbgの色は少しの間白になります(ナビゲーションバーが正常に表示されます)。次に、ビューのbgカラーが黒に変わります(ストーリーボードでは黒に設定されていました)。次に、Webビューがロードされます。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];
    }
}

編集:それはウェブビューと関係があります。Webビューを削除すると、必要に応じてセグエが遷移します。

編集:私の現在の回避策は、ロードされるまでWebビューを非表示にすることです。ロードされていない場合、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: を実行したと思います。

セグエ トランジションと UIWebView の両方がタスクを実行するために同じメイン スレッドを使用するため、デフォルトの「白」の背景を黒の背景に変更する手順が UIWebView のアクティビティにより一時停止されたため、「白」の背景が一時的に表示されました。

UIWebView をviewDidAppearにロードしようとすると、セグエ遷移が完了したときに UIWebView がメイン スレッドの消費を開始します。

于 2012-11-09T23:11:27.703 に答える