检查是否已加载UIWebView

vbu*_*vic 18 iphone uiwebview

我在一个选项卡中有一个UIWebView加载到viewDidLoad中,但如果用户点击其他选项卡,加载将被中断 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error并将被调用,但我想知道如果用户再次点击上一个选项卡,如何加载webView,以及如果它没有加载它会重新加载它,就像这样

  -(void)viewWillAppear:(BOOL)animated
{
    if (!webView)
        {
          NSURL *url = [NSURL URLWithString:@"url"];
          NSURLRequest *request = [NSURLRequest requestWithURL:url];
          [webView loadRequest:request];
        }

    }
Run Code Online (Sandbox Code Playgroud)

但它不起作用,请帮忙吗?

Zig*_*rth 28

UIWebview具有webViewDidFinishLoad委托方法.设置一个bool来表明这已经完成.

- (void)webViewDidStartLoad:(UIWebView *)webView {

 webViewDidFinishLoadBool = NO;
 loadFailedBool = NO;

}


- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

 loadFailedBool = YES;
}


- (void)webViewDidFinishLoad:(UIWebView *)webView {

   if (!loadFailedBool)
   webViewDidFinishLoadBool = YES;

}
Run Code Online (Sandbox Code Playgroud)


mat*_*tsr 8

如果你还没有工作,这是一个有效的例子.它还会在无法加载时显示警报,并且警报仅显示一次.

标题:

@interface MyViewController : UIViewController <UIWebViewDelegate> {
    BOOL wasLoaded;
    BOOL alertWasShown;
}

@property (nonatomic, retain) IBOutlet UIWebView *myWebView;

@end
Run Code Online (Sandbox Code Playgroud)

执行:

- (void)loadWebView:(NSString *)urlString {
    if (wasLoaded == NO) {
        NSURL *url = [NSURL URLWithString:urlString];
        NSURLRequest *requestObject = [NSURLRequest requestWithURL:url];
        [myWebView loadRequest:requestObject];
    }
}

- (void)viewWillAppear:(BOOL)animated {
    NSString *urlString = @"put your url here";
    [self loadWebView:urlString];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    wasLoaded = NO;
    alertWasShown = NO;
    myWebView.delegate = self;
}

- (void)webViewDidStartLoad:(UIWebView *)webView {
    // Not necessary to do anything here.
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    wasLoaded = YES; // Indicates that it finished loading.
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    if (alertWasShown == NO) {
        UIAlertView *alert = ... // Create an alert.
        [alert show];

        alertWasShown = YES;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望有所帮助.