kos
kos

Reputation: 269

monotouch DialogViewController RefreshRequested "System.ArgumentException: You should set the handler before the controller is shown"

I have some problems with getting the RefreshRequested event to work in one of my ViewControllers that implements the DialogViewController:

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

I am calling the CustomViewController from another ViewController like this:

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

The error message I get is "Toplevel exception: System.ArgumentException: You should set the handler before the controller is shown"

Any pointers of what I am doing from here? Thanks

Upvotes: 2

Views: 405

Answers (2)

user2676300
user2676300

Reputation: 1

From my testing, the only place that you can set the event handler is in the constructor of the ViewController, as that's the only place where you can rely on the fact that the TableView property is null. I've tried the suggestion above of setting the RootElement in the constructor, but then always seem to have a TableView object before I can set the event handler. The problem with setting the event handler in the constructor though is that I don't have any way of resetting the event handler after cleaning it up.

Upvotes: 0

poupou
poupou

Reputation: 43553

It looks like you do not have a RootElement specified, i.e. it's set to null by your own constructor, so you get warned that the internal state is not ready to set the event.

You should create an empty RootElement with your constructor and, later, add stuff to it (using the property). That should allow you to set the event in your own constructor. E.g.

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

Any pointers of what I am doing from here?

In doubt you can always see the entire source code MonoTouch.Dialog in it's github repository.

Upvotes: 3

Related Questions