【问题标题】:Loading url on UIWebView crashes with "unrecognized selector" exception在 UIWebView 上加载 url 时因“无法识别的选择器”异常而崩溃
【发布时间】:2015-03-30 04:27:11
【问题描述】:

我在我的应用程序中构建了一个视图控制器,其唯一元素是 UIWebView。我正在尝试在其视图控制器加载后立即使用以下代码在此 uiwebview 元素上加载网页:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    NetworkHelper *networkHelper = [NetworkHelper getInstance];

    NSString *tocsUrl = [NSString stringWithFormat:@"%@%@",                         networkHelper.clientConfiguration[@"hdv_production_uri"],
                         @"/tocs?device=iOS"];
    NSURL *url = [NSURL URLWithString:tocsUrl];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:urlRequest];
}

字符串 tocsUrl 是有效的 http 字符串 (http://192.168.1.12:3000/tocs?device=iOS)。

但是,[self.webView loadRequest:urlRequest]; 行正在使应用程序崩溃,但出现以下异常:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView loadRequest:]: unrecognized selector sent to instance 0x170188fd0'
*** First throw call stack:
(0x186d86530 0x197d640e4 0x186d8d5f4 0x186d8a3ac 0x186c8ec4c 0x1000b5d18 0x18b594958 0x18b594668 0x18bc881d0 0x18b88f790 0x18b8aab50 0x18b8acf68 0x18b681c4c 0x18b5c8a14 0x18b5b1d08 0x18b5c83b0 0x18b587ec8 0x186d3ed98 0x186d3bd24 0x186d3c104 0x186c691f4 0x19008b6fc 0x18b5fa10c 0x1000e0ad8 0x1983e2a08)
libc++abi.dylib: terminating with uncaught exception of type NSException

self.webView在.h文件中定义为:

@property (strong, nonatomic) IBOutlet UIWebView *webView;

任何有关如何解决此崩溃的指示都将受到高度赞赏。

【问题讨论】:

  • 在您的 xib/storyboard 中检查 webView 的自定义类 - 看起来它是 UIView 而不是 web 视图。还要检查插座是否连接到正确的视图。注意IBOutlets 属性通常声明为weak,因为所有 ui 元素都由它们的父视图保留。请注意,在 IB 中更改对象的自定义类并不总是正常工作 - 查看代表视图层次结构中的 webview 的图标。它应该包含一个小指南针图标。如果它看起来像一个常规视图,它仍然是一个常规视图,即使自定义类说的不同。

标签: ios objective-c uiwebview


【解决方案1】:

检查您的 webView,您已将其分配给 UIView,而不是您的 UIWebView。您还可以删除并重新添加到您的 UIWebView 和 Interface Builder 的连接。您可以使用shift+option+right click 来确保您在 IB 中选择了正确的控制器

【讨论】:

  • 该元素在 .h 文件中定义为 UIWebView 元素。但是,我将其删除并再次将其添加到 IB 的 .h 文件中,这一次它按预期工作。看起来应用程序的配置出了点问题。
猜你喜欢
  • 2017-04-26
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 2016-07-05
相关资源
最近更新 更多