It should be sufficient to reuse the already existing XMPPRoster object. For that you could write a custom init-method for your ViewController.m, e.g.
- initWithRoster:(XMPPRoster *)roster
{
self = [super initWithNibName:@"nibName" bundle:nil];
...
}
and then assign the roster to an instance variable or property of ViewController. It is possible then to access the XMPPRoster object when the view is loading and loaded.
Alternatively you could just add an XMPPRoster property to ViewController and assign the roster object from MainAppDelegate after the view controller is instantiated but before the controller is displayed. Yet I prefer the first solution.