2013-05-02 63 views
1

拋出例外,我有以下代碼試圖在我的應用程序加載網頁:的UIWebView的loadRequest上

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 = new UIWebView();之前loginWebView設置爲null。我想要創建一個這樣的新的,還是我的出口有問題?

LoginViewController.Designer.cs

enter image description here

故事板

enter image description here

+0

不確定,但'TargetInvocationException'意味着在反射過程中,在調用方法時出現異常。內部例外將提供錯誤的真實細節。 – 2013-05-02 02:09:25

+0

@KirkWoll我剛剛編輯我的帖子。這看起來合適嗎?任何想法爲什麼現在不加載? – Deekor 2013-05-02 02:11:21

+0

您是否已將loginWebView添加到其父項以便其可見? – Jason 2013-05-02 03:04:04

回答

2

@Deekor,

我裝了一個新的項目,我試圖做出你正在做的。我遇到了同樣的問題,如果我按照以下步驟:

  1. 創建一個新的iPhone,單視圖,故事板項目。
  2. 打開故事板文件,並拖動一個UIWebView到了在新的項目中自動創建的UIViewController。
  3. 回到Xamarin Studio和在這對我創建的LoginViewController.cs文件,儘量把在loginWebView.Request代碼。

這行不通,因爲你注意到,因爲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"))); 
        } 
    } 
    

我不知道爲什麼有時從一個新的項目自動生成的文件行事古怪,但基本上我所做的就是刪除它所創建,並手動添加相同的東西,然後它的工作。當您啓動時,Web視圖爲空,這讓我覺得有什麼錯誤。如果有什麼困惑,請發表評論,如果可以,我會盡力解釋。按照上面的步驟,我確實得到了這個工作。在附圖中,您可以看到它在模擬器中運行,顯示您的頁面。 uiwebview loading the page

+0

啊哈!我的控制器就像你在汽車世代後建議的一樣。然而,我只是注意到類頭生成爲公共部分類LoginViewController:UIView'不公共部分類LoginViewController:UIViewController'改變它修復它! – Deekor 2013-05-06 18:23:55

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已添加到您的故事板,然後連接成一個出口的一個問題...

+0

沒有,仍然沒有加載頁面。我用我的插座的屏幕截圖更新了我的問題。 – Deekor 2013-05-02 16:15:44

+0

你是否在多個開發機器上試過這個?模擬器肯定有互聯網接入?我試過我的代碼,它工作正常。 – Blounty 2013-05-03 10:32:07

+0

我還沒有嘗試過其他機器,但它絕對具有interent訪問權限,我在代碼的其他部分做了'httprequest'就好了。我的插座在上面的截圖中看起來是否正確? – Deekor 2013-05-03 17:24:00

相關問題