更改Master-Detail-Application的初始View Controller

jer*_*rik 0 launch storyboard master-detail viewcontroller ios

我在Master-Detail-Application上创建了一个新的iPhone项目.由于我之前需要登录,我在故事板上添加了一个新的ViewController,勾选了" 是初始视图控制器 "并将新创建的类LoginViewController分配给此ViewController.

此外,但不相关(在我看来),我创建了一个segue并将其从ViewController连接到NavigationController(Master-Detail-Template).

AppDelegate.m改为在启动时推出新的控制器:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

这将最终出现错误:

*** 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.'
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

导致类似的错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'UICollectionView must be initialized with a non-nil layout parameter'
Run Code Online (Sandbox Code Playgroud)

我的错误在哪里?

我没有得到的是,错误消息中的UICollectionView来自何处.我从来没有创建过一个或添加一个?

故事板

jer*_*rik 5

LoginViewController以错误的形式继承UICollectionViewController而不是UIViewController.我修复了它,它的工作原理.

这解释了我最初没有理解的奇怪的错误消息.一如既往,真相就在源代码中.重新检查有帮助.