Search code examples
iosstoryboardviewcontrollerlaunchmaster-detail

Change initial View Controller of Master-Detail-Application


I created a new iPhone project on a Master-Detail-Application. As I need a login before, I added at the storyboard a new ViewController, checkmarked "is initial View Controller" and assigned the new created class LoginViewController to this ViewController.

Furthermore but not relevant (in my opinion), i created a segue and connected it from the ViewController to the NavigationController (of the Master-Detail-Template).

The AppDelegate.m was changed to launch the new controller at startup:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    /* // Old Master-Detail-View-Controller
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
    MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
    controller.managedObjectContext = self.managedObjectContext;
     */

    (LoginViewController *)self.window.rootViewController;

    return YES;
}

This will end up in the error:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '-[UICollectionViewController loadView] loaded the "Qn5-Rj-iPA-view-IRE-eP
-ILZ" nib but didn't get a UICollectionView.'

I have as well tried this:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    LoginViewController *loginViewController = [[LoginViewController alloc] init];

    self.window.rootViewController = loginViewController;   //Set the view controller
    [self.window makeKeyAndVisible];

    return YES;
}

Resulting in a similar error:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'UICollectionView must be initialized with a non-nil layout parameter'

Where is my mistake?

What I do not get is, where the hell the UICollectionView in the error message comes from. I did never create one or add one??

Storyboard


Solution

  • My LoginViewController inherits by mistake form UICollectionViewController instead of UIViewController. I fixed that and it works.

    This explained the strange errormessage which i did not understood in the first place. As always the truth is in the sourcecode. Rechecking helps.