2011-06-17 14 views
2

私の以前の.xibファイルをすべて削除しました。今、その私は、このエラーを与え始め:'キャッチされていない例外のためにアプリケーションを終了しました' .. MainWindowが見つかりませんでした。

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle (loaded)' with name 'MainWindow''

メインウィンドウは、しばらく前に削除され、展開の情報からメインウィンドウを削除すると、私はちょうど黒い画面を与えてることを意味しました。これは私のアプリケーションデリゲートにあるコードです:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    [application setStatusBarStyle:UIStatusBarStyleBlackOpaque]; 
    [window addSubview:navigationController.view]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

私に何か不足していますか?私はMainWindowを削除する必要があると推測しますが、私が言うように、これは私に黒い画面を与えているだけです。

答えて

6

Info.plistNSMainNibFileの値が設定されているため、このエラーが発生しています。それは起動時にそのファイルNIBを開くようにOSに指示します。なんらかの理由でNIBさんと一緒にいなくなっているので、NIBファイルを削除して作成した穴に記入する必要があります。

  1. Info.plistから鍵を削除する必要があります。
  2. main.mにいくつかの変更を加えなければなりません。通常、MainWindow.xibにはアプリケーションデリゲートに関する情報が含まれていましたが、今すぐ提供する必要があります。あなたがこれまでにやったことはアプリケーションデリゲートのインスタンスを作成し、あなたのapplication:didFinishLaunchingWithOptions:が呼び出されますが、それはでの世話をされたとして、あなたのwindowがまだ設定されていないint retVal = UIApplicationMain(argc, argv, nil, nil);を読み込む行を見つけ、int retVal = UIApplicationMain(argc, argv, nil, @"yourDelegateClassName");

  3. と交換NIBファイルを再度作成します。これはすべての店舗に適用されます。あなたの `ウインドウだけでなく、

あなたは、上記の方法は、単にテンプレートで、あなたの条件に変更する必要があり

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    // Instantiate Window 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

    // Instantiate Root view controller 
    RootViewController * viewController = [[[RootViewController alloc] init] autorelease]; 

    // Instantiate navigation controller 
    navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

    [application setStatusBarStyle:UIStatusBarStyleBlackOpaque]; 
    [window addSubview:navigationController.view]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

、このようなあなたのapplication:didFinishLaunchingWithOptions:方法にはいくつかの追加を行う必要があります。

+0

これはまだ残念ながら、上部にナビゲートバーが付いた黒い画面で起動します。私のRootViewControllerはHomeView(見える最初のビュー)でしょうか?そして、あなたが 'yourDelegateClassName'を置く場所にはHomeViewも置いてあります。これは正しいです?これは私が持っているものです。 – Andrew

+2

yourDelegateClassNameはビューコントローラではなく、アプリケーションデリゲートにする必要があります。 – Luke

+0

これは動作します。複雑なもの。お二人のおかげです。 – Andrew

関連する問題