1

我试图避免 UIWebView 加载内容时显示的空白窗口。我不想在 UIWebView 上放置背景,而是在当前窗口上放置一个 HUD,然后在加载内容时推送包含 uiwebview 的新 uiviewcontroller。这是我所做的(为了理智而缩短了代码):

第一视图:

MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
myVC.parentController = self.navigationController;
UIView *myView = [myVC view];      // Force view to load

我的视图控制器:

- (void)viewDidLoad
{
  ...
  [myWebView setDelegate:self];
  [myWebView loadHTMLString:htmlString baseURL:baseURL];
  ...
 }


- (void) webViewDidFinishLoad:(UIWebView*) webView {
     [parentController pushViewController:self animated:YES];
}

好的,所以viewDidLoad被调用了,但是没有一个 uiwebviewdelegate 方法被调用。但是,如果我推动视图控制器

第一视图:

MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController myVC animated:YES];

然后调用中的所有 uiwebviewdelegate 方法MyViewController

我被困住了。

4

1 回答 1

0

我不知道您的应用程序的具体要求,但通常更好的做法是先推送您的视图控制器,然后在您的内容加载时在新视图控制器的顶部显示 HUD。您可以在 中将 HUD 添加到视图控制器的视图中viewDidLoad,并在 webView 的webViewDidFinishLoad回调方法中删除 HUD。

如果您还没有这样做,请确保您在后台线程中加载 Web 视图的内容,以免在内容加载时阻塞主 UI 线程,否则用户会觉得您的应用程序已暂时冻结。

于 2012-04-15T22:00:04.177 回答