【问题标题】:UIWebView Not Loading ViewUIWebView 未加载视图
【发布时间】:2014-03-25 21:52:29
【问题描述】:

我的 UIWebView 似乎没有加载:

- (void)viewDidAppear:(BOOL)animated {

[super viewDidAppear:animated];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *urlAddress = [defaults stringForKey:@"webPage"];
NSLog(@"%@", urlAddress);

NSURLRequest *requestObj = [NSURLRequest requestWithURL:[NSURL URLWithString:urlAddress]];
webView.delegate = self;
[webView loadRequest:requestObj];

}

它在 UIViewController 中(通过 IB 连接)并且 urlAddress 返回 google.com

【问题讨论】:

    标签: ios objective-c uiwebview


    【解决方案1】:

    你能检查获取的 URL 是否有效吗?

        NSString *urlAddress = [defaults stringForKey:@"webPage"];
        NSLog(@"%@", urlAddress);
        NSURL *u = [NSURL URLWithString:urlAddress];
        if(u){
          NSURLRequest *requestObj = [NSURLRequest requestWithURL:u];
          webView.delegate = self;
          [webView loadRequest:requestObj];
        }else{
          [[[UIAlertView alloc] initWithTitle:@"" message:@"invalid url." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];
        }
    

    google.com 不是有效的 URL,它应该是 http://www.google.com。所以也许这就是这里的问题。

    【讨论】:

    • 对http:有效
    【解决方案2】:

    试试这个代码:

        - (void)viewDidAppear:(BOOL)animated 
        {
            [super viewDidAppear:animated];
            webView.delegate = self;
            NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
            NSString *urlAddress = [defaults stringForKey:@"webPage"];
            NSLog(@"%@", urlAddress);
            [self openURLFromString:urlAddress];
        }
    
        - (void) openURLFromString:(NSString*) urlString
        {
            NSURL *url = [self validateAddress:urlString];
            NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
            [webView loadRequest:request];
        }
    
        - (NSURL*) validateAddress:(NSString*) address
        {
            NSURL* result = [NSURL URLWithString:address];
            if (!result.scheme)
            {
                NSString* modifiedURLString = [NSString stringWithFormat:@"http://%@", address];
                result = [NSURL URLWithString:modifiedURLString];
            }
    
            return result;
        }
    
        #pragma mark - UIWebViewDelegate
        - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSMutableURLRequest *)urlRequest navigationType:(UIWebViewNavigationType)navigationType
        {
            return YES;
        }
    

    【讨论】:

      【解决方案3】:

      您缺少 URL (Click here to read more about this) 的 基本 URL 部分,这是必需的。

      所以试试这个:

      - (void)viewDidAppear:(BOOL)animated {
      
      [super viewDidAppear:animated];
      
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
      NSString *urlAddress = [defaults stringForKey:@"webPage"];
      NSString * theURL = [NSString stringWithFormat:@"http://%@", urlAddress]; // you can also use stringByAppendingString if you prefer
      NSLog(@"%@", theURL);
      
      NSURLRequest *requestObj = [NSURLRequest requestWithURL:[NSURL URLWithString:theURL]];
      webView.delegate = self;
      [webView loadRequest:requestObj];
      
      }
      

      HTH :)

      【讨论】:

        猜你喜欢
        • 2014-04-02
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 2012-08-09
        相关资源
        最近更新 更多