1

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

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异常。

loginWebView是一个UIWebView

怎么了?

编辑

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

在我调用之前查看调试中的本地人loginWebView设置为. 我想创建一个这样的新产品,还是我的插座有问题?nullloginWebView = new UIWebView();

LoginViewController.Designer.cs

在此处输入图像描述

故事板

在此处输入图像描述

4

2 回答 2

2

@Deekor,

我加载了一个新项目,并尝试完全按照您的要求制作。如果我按照以下步骤操作,我遇到了同样的问题:

  1. 创建一个新的 iPhone、单一视图、情节提要项目。
  2. 打开故事板文件并将 UIWebView 拖到新项目中自动创建的 UIViewController 上。
  3. 返回 Xamarin Studio 并在为我创建的 LoginViewController.cs 文件中,尝试放入 loginWebView.Request 代码。

正如您所注意到的,这不起作用,因为 Web 视图为空。不应该。我不知道为什么,但是自动创建的 LoginViewController.cs 文件中也缺少方法。我无法覆盖您想要的 ViewDidLoad()。即使该类是从 UIViewController 继承的,覆盖也是不可用的。所以这是我解决问题的方法:

  1. 删除 Storyboard 中自动生成的 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")));
        }
    }
    

我不知道为什么有时来自新项目的自动生成的文件表现得很奇怪,但基本上我所做的只是删除它创建的内容,然后再次手动添加相同的内容,然后它就可以工作了。启动时 Web 视图为空,这让我觉得有问题。如果有什么令人困惑的地方,请发表评论,如果可以的话,我会尽力解释得更好。我确实按照上述步骤完成了这项工作。在附加的图像中,您可以看到它在模拟器中运行,显示您的页面。uiwebview 加载页面

于 2013-05-06T13:48:46.313 回答
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 如何添加到您的 Storyboard 然后作为插座连接是一个问题......

于 2013-05-02T10:13:09.353 回答