0

Master-Detail-Applicationで新しいiPhoneプロジェクトを作成しました。以前にログインが必要だったので、ストーリーボードに新しいViewControllerを追加し、 「is initial View Controller」にチェックマークを付け、新しく作成したクラスLoginViewControllerをこのViewControllerに割り当てました。

さらに、(私の意見では)関連性はありませんが、セグエを作成し、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;
}

これはエラーになります:

*** 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.'

私もこれを試しました:

- (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;
}

同様のエラーが発生します:

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

私の間違いはどこにありますか?

私が得られないのは、エラーメッセージのUICollectionViewがどこから来たのかということです。作成したことも追加したこともありませんか?

ストーリーボード

4

2 に答える 2

5

の代わりにLoginViewController誤ってフォームを継承します。私はそれを修正しました、そしてそれは働きます。UICollectionViewControllerUIViewController

これは、私が最初に理解していなかった奇妙なエラーメッセージを説明しました。いつものように、真実はソースコードにあります。再確認すると役立ちます。

于 2013-02-12T08:46:54.827 に答える
0

AppDelegateにViewControllerをロードするために何もする必要はありません。stroyboardがプロジェクト設定にロードされるものである限り、自動的にロードされます。

于 2013-02-11T23:32:51.087 に答える