Peter Kazazes
Peter Kazazes

Reputation: 3628

Root View Controller?

I'm working with ShareKit, an open-source sharing foundation for iOS apps. There is a known bug that prevents the Kit from detecting what your root view controller is. The fix for that bug is adding [SHK setRootViewController:myViewController]; in the app delegate.

If the fix is in the UIApplication didFinishLaunching method, wouldn't the view controller just be self? What am I missing? I've also tried self.viewController, self.window.rootViewController and self.window to no avail.

EDIT: Here's the entire didFinishLoading:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[Chatter_BoxViewController alloc] initWithNibName:@"Chatter_BoxViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    [SHK setRootViewController:self.viewController];

    return YES;
}

Upvotes: 0

Views: 2495

Answers (1)

Rui Peres
Rui Peres

Reputation: 25907

If it would only be "self" in the didFinishLaunching it would refer to the UIApplication, don't you agree? Are you initing correctly the viewController? Post some more code. :)

Comment to your Edit:

If you have your Window set normally in your XIB you don't need this:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

Also, if you do this (presuming your viewController is retained as property):

self.viewController = [[Chatter_BoxViewController alloc] initWithNibName:@"Chatter_BoxViewController" bundle:nil]; 

You will have a leak. Just do this:

viewController = [[Chatter_BoxViewController alloc] initWithNibName:@"Chatter_BoxViewController" bundle:nil]; 

Upvotes: 2

Related Questions