带有Outlet和Delegate的UIWebView导致NSUnknownKeyException

时间:2014-02-05 21:51:00

标签: ios xcode uiwebview

我遇到了将UIWebView作为插座的问题。我做了我的研究,这是我采取的步骤。

使用XCode 5.0.1

  • 使用XIB

  • 创建了一个名为WebViewController的ViewController
  • 已验证的文件所有者是WebViewController

  • 将UIWebView添加到xib

  • 将UIWebView委托设置为FileOwner WebViewController

  • 修改了WebViewController.h,添加

  • 将以下方法添加到WebViewController.m

    1. (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    2. (void)webViewDidFinishLoad:(UIWebView *)webView
    3. (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
    4. (void)webViewDidStartLoad:(UIWebView *)webView
  • 从UIWebView到myWebView创建一个插座(在.m文件中)

只要我按下WebViewController,就会在myWebView上出现NSUnknownKeyException。

 *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<WebViewController 0x19ff75a0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key myWebView.'

重要提示:如果我只是删除myWebView的插座,那么我可以推动WebViewController。当然,我无法修改UIWebView,但没有插座。

知道这里发生了什么吗?我在新的/空白项目中也遇到了同样的问题。

更新: - 所以WebViewController.xib FIleOwner自定义类是:WebViewController,在InterfaceBuilder中验证 - 在运行时创建就像这样

 [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
  • 在WebViewController.m中的initWithNibName处设置的断点永远不会触发。

3 个答案:

答案 0 :(得分:0)

来自错误消息,似乎xib中的UIWebView已经连接到名为myWebView的插座,但插座变量不在.m或.h中;尝试右键单击xib文件中的UIWebView,然后删除已连接的插座。

修改

如果那个技巧不起作用。尝试从xib手动删除myWebView。这里的步骤:

  • 右键点击xib,点击Open As,然后点击Source Code
  • 您将获得xib的xml代码,尝试使用myWebView关键字找到(ctrl + f)
  • 将其删除

答案 1 :(得分:0)

确保将WebViewController添加到目标。点击WebViewController.m检查目标成员资格。确保选中复选框。

enter image description here

答案 2 :(得分:0)

所以我发现这个后改变了文件的名称:

https://developer.apple.com/library/ios/samplecode/uicatalog/listings/ViewControllers_WebViewController_m.html

现在一切都很完美。我在问题中列出的步骤可以很好地创建UIWebView。