我在使用一个实现DialogViewController的ViewControllers中使用RefreshRequested事件时遇到了一些问题:
public CustomViewController () : base (null, true) {
RefreshRequested += delegate {
...
ReloadComplete ();
};
}
我从另一个ViewController调用CustomViewController
,如下所示:
var dvc = new CustomViewController();
this.ActivateController(dvc);
我得到的错误消息是“Toplevel异常:System.ArgumentException:您应该在显示控制器之前设置处理程序”
我在这里做的任何指示?感谢
答案 0 :(得分:3)
看起来您没有指定RootElement
,即它由您自己的构造函数设置为null
,因此您会收到警告,内部状态尚未准备好设置事件。
你应该用你的构造函数创建一个空的RootElement
,然后再向它添加东西(使用属性)。这应该允许您在自己的构造函数中设置事件。 E.g。
public CustomViewController () : base (new RootElement (String.Empty), true)
我在这里做的任何指示?
有疑问,你总能在它的github存储库中看到整个source code MonoTouch.Dialog。
答案 1 :(得分:0)
从我的测试中,你可以设置事件处理程序的唯一地方是在ViewController的构造函数中,因为这是唯一可以依赖TableView属性为null的地方。我已经尝试了上面在构造函数中设置RootElement的建议,但是在我可以设置事件处理程序之前似乎总是有一个TableView对象。在构造函数中设置事件处理程序的问题是,我在清理事件处理程序后没有任何重置事件处理程序的方法。