2012-02-20 12 views
2

我有一些問題得到RefreshRequested事件在我ViewControllers之一來實現的DialogViewController:MonoTouch的DialogViewController RefreshRequested「System.ArgumentException:你應該將處理程序之前顯示控制器」

public CustomViewController() : base (null, true) { 
     RefreshRequested += delegate { 
     ... 
     ReloadComplete(); 
     }; 
    } 

我從另一個視圖控制器這樣調用CustomViewController

var dvc = new CustomViewController(); 
this.ActivateController(dvc); 

該錯誤消息我得到的是「Toplevel的異常信息:System.ArgumentException:你應該設置處理之前控制器SH自己的「

任何指針,我在這裏做什麼?由於

回答

3

看起來你不是一個RootElement規定有別,即它是由你自己的構造函數設置爲null,讓您得到警告,內部狀態是不準備設定的事件。

您應該使用您的構造函數創建一個空的RootElement,稍後向其中添加東西(使用屬性)。這應該允許你在你自己的構造函數中設置事件。例如。

public CustomViewController() : base (new RootElement (String.Empty), true) 

的什麼,我在這裏做任何指針?

不確定你總是可以看到整個source code MonoTouch.Dialog它的github存儲庫。

0

從我的測試中,您可以設置事件處理程序的唯一位置在ViewController的構造函數中,因爲這是唯一可以依賴TableView屬性爲null的事實。我已經嘗試了在構造函數中設置RootElement的上述建議,但是在設置事件處理函數之前,似乎總是有一個TableView對象。在構造函數中設置事件處理程序的問題是,我沒有任何方法清理後重置事件處理程序。

相關問題