单点触控对话框视图控制器刷新请求"System.ArgumentException: You should set the handler before the controller is shown



我在使RefreshRequested事件在我的一个实现DialogViewController:的ViewController中工作时遇到了一些问题

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

我从另一个ViewController调用CustomViewController,如下所示:

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

我得到的错误消息是"顶级异常:System.ArgumentException:您应该在显示控制器之前设置处理程序"

有什么迹象表明我在这里做什么吗?感谢

看起来您没有指定RootElement,即它是由您自己的构造函数设置为null的,因此您会收到内部状态尚未准备好设置事件的警告。

您应该使用构造函数创建一个空的RootElement,然后(使用属性)向其中添加内容。这应该允许您在自己的构造函数中设置事件。例如

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

有什么迹象表明我在这里做什么吗?

毫无疑问,您总是可以在github存储库中看到整个源代码MonoTouch.Dialog。

根据我的测试,您可以设置事件处理程序的唯一位置是在ViewController的构造函数中,因为这是您可以依赖TableView属性为null这一事实的唯一位置。我尝试过上面在构造函数中设置RootElement的建议,但在设置事件处理程序之前,似乎总是有一个TableView对象。不过,在构造函数中设置事件处理程序的问题是,在清理事件处理程序后,我没有任何方法重置它。

相关内容

最新更新