ioslaunching-application

"Applications are expected to have a root view controller at the end of application launch"


My app was launching fine earlier today and now I'm getting this error

"Applications are expected to have a root view controller at the end of application launch"

I've looked at other threads saying to change my code, but I never changed any code to get to this point.

Delegate.h

@interface halo4AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>{
    UIWindow *window;
    UITabBarController *tabBarController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

@end

Delegate.m

@implementation halo4AppDelegate

@synthesize window;
@synthesize tabBarController;


#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{   
    sleep(3);
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}


#pragma mark -
#pragma mark Memory management

- (void)dealloc {
    [tabBarController release];
    [window release];
    [super dealloc];
}

@end

The xib for my FirstViewController is titles FirstView.xib , ext


Solution

  • This is not an error, more like a warning.

    In your application delegate there is a method named application:didFinishLaunchingWithOptions: in this method you have to make this line before the end of the method self.window.rootViewController = [Some UIViewController]

    again, this is not an error, you can ignore the rootViewController IF you have another way to create this rootViewController.

    EDIT

    This is what your method should looks like:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
      UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
      UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
      self.tabBarController = [[UITabBarController alloc] init];
      self.tabBarController.viewControllers = @[viewController1, viewController2];
      self.window.rootViewController = self.tabBarController;
        [self.window makeKeyAndVisible];
        return YES;
    }