UIWebView在LoadRequest上抛出异常

时间:2013-05-02 01:57:14

标签: c# xamarin.ios xamarin

我有以下代码尝试在我的应用上加载网页:

Console.WriteLine("login view class");
NSUrl url = new NSUrl("http://deekor.com");
NSUrlRequest request = new NSUrlRequest(url);
loginWebView.LoadRequest(request);

最后一行:

loginWebView.LoadRequest(request);

正在抛出System.Reflection.TargetInvocationException例外。

loginWebViewUIWebView

出了什么问题?

修改

我想我忘记了这一行:loginWebView = new UIWebView();添加后,异常消失了......但页面没有加载..

查看调试中的本地人,我在调用loginWebView之前将null设置为loginWebView = new UIWebView();。我想创建一个这样的新的,或者我的插座出了什么问题?

LoginViewController.Designer.cs

enter image description here

故事板

enter image description here

2 个答案:

答案 0 :(得分:2)

@Deekor,

我加载了一个新项目,我试图准确地制作你正在制作的东西。如果我按照以下步骤操作,我遇到了同样的问题:

  1. 创建一个新的iPhone,单一视图,故事板项目。
  2. 打开storyboard文件并将UIWebView拖到新项目中自动创建的UIViewController上。
  3. 回到Xamarin Studio并在为我创建的LoginViewController.cs文件中,尝试输入loginWebView.Request代码。
  4. 这不起作用,因为您注意到因为Web视图为空。它不应该。我不知道为什么,但是在自动创建的LoginViewController.cs文件中也缺少方法。我无法覆盖你想要的ViewDidLoad()。即使该类继承自UIViewController,覆盖也不可用。所以这就是我如何解决问题:

    1. 删除故事板中自动生成的UIViewController。
    2. 删除随附的自动生成的类(LoginViewController.cs)
    3. 现在在故事板中,拖动一个新的UIViewController。
    4. 在界面构建器的“自定义类”框中,输入您的类名:LoginViewController。
    5. 返回Xamarin Studio,让它同步并再次为您创建文件。
    6. 不返回Interface Builder / Xcode并将UIWebView拖到您在步骤3中创建的新LoginViewController上。
    7. 就像之前一样,将您的插座拖到loginWebView。
    8. 返回Xamarin Studio并让它同步。
    9. 打开LoginViewController.cs文件,现在可以覆盖ViewDidLoad()。
    10. 现在你可以这么做:

      public partial class LoginViewController : UIViewController
      {
          public LoginViewController (IntPtr handle) : base (handle)
          {
          }
      
          public override void ViewDidLoad ()
          {
              base.ViewDidLoad ();
      
              loginWebView.LoadRequest(new NSUrlRequest(new NSUrl("http://deekor.com")));
          }
      }
      
    11. 我不知道为什么有时候来自新项目的自动生成的文件会很奇怪,但基本上我所做的就是删除它创建的内容,并再次手动添加相同的内容然后就可以了。启动时Web视图为null是让我觉得有些错误的原因。如果有些事情令人困惑,请评论,如果可以,我会尽力解释。我按照上面的步骤完成了这项工作。在附加的图像中,您可以看到它在模拟器中运行,显示您的页面。 uiwebview loading the page

答案 1 :(得分:1)

只是看看发生了什么,请尝试以下方法:

Console.WriteLine("login view class");
var webView = new UIWebView(this.View.Frame);
this.View.Add(webView);
NSUrl url = new NSUrl("http://deekor.com"); 
NSUrlRequest request = new NSUrlRequest(url);
webView.LoadRequest(request);

如果这样可行,则意味着将WebView添加到故事板然后作为插座连接的问题......