2012-04-26 14 views
1

私はiOSのにかなり新たなんだ、とここで説明するように、別のビューコントローラ内からビューコントローラを提示しようとしています:私は開始別のUIViewController内部からUIViewControllerを表示しますか?

ともhere on Apple's site

(第3の回答を参照してください)

Stack overflow answerHello World Example codeとなります。私が最後にこのコードを追加し、MyViewController.mを開くとはupdateString()メソッドを変更します。私も、私は他のNIBファイルを置く「HighScore.xib」と呼ばれるNIBファイルを作成している

{ 
     // Get the application's "window" 
    UIWindow *window = [UIApplication sharedApplication].keyWindow; 
     // Get the window's rootViewController (NOTE: Only works on iOS 4.0 or later!) 
    UIViewController *rootViewController = window.rootViewController; 

     // Create our new controller 
    UIViewController *enterNameController = [[UIViewController alloc] initWithNibName:@"HighScore" bundle:[NSBundle mainBundle]]; 

    if (enterNameController != NULL) 
    { 
     printf("\nLoaded UIView controller. Installing as actionSheetController...\n\n"); 

     UINavigationController *navigationController = [[UINavigationController alloc] 
         initWithRootViewController:enterNameController]; 

      // Present out Enter Name for High Score view as a modal view 
    // [rootViewController presentViewController:navigationController animated:YES];  // iOS 2.0 and newer 
     [self presentViewController:navigationController animated:YES completion: nil];  // iOS 5.0 and newer 
    } 
} 

ことHelloWorldに付属していました。また、HighScore.xibをXCodeプロジェクトに追加し、それを「バンドルリソースのコピー」セクションにドラッグしました。キャッチされない例外により「NSInternalInconsistencyException」、理由に

*アプリを終了::ランニングと編集フィールドにテキストを入力する際

は、AS-され、私はエラーを取得する「バンドルにNIBをロードできませんでした。」 NSBundle(ロードされた) '名前' HighScore ''

しかし、 "self"の代わりに "rootViewController"を使用するように最終ステートメントを変更すると、は何もないが発生します。例外はありませんが、新しいビューも表示されません。

質問:

1)NIBが読み込まれないのはなぜですか?私は明らかにここで何か間違っています。

2)「self」の代わりに「rootViewController」を使用すると、結果が異なるのはなぜですか? rootViewControllerが "self"と同じクラスを見つけてはいけませんか? "rootViewController" を使用しているとき、私はXcodeで警告を受けること

注: "MyViewController -presentViewController 'に応答しないこと':アニメーション:完了を":使用

A)

+0

NIBファイル名が正しく入力されました。initWithNibName:@ "HighScore"、あなたのプロジェクトのHighScore.xibファイルが正しいことを確認してください...! – Dinesh

+0

はい、上で述べたように、それはプロジェクトと「バンドルリソースのコピー」セクションにもあり、正しく名前が付けられています。 –

答えて

0

を私がすることで、この問題を解決しましたここではチュートリアル:

http://timneill.net/2010/09/modal-view-controller-example-part-1/

b)の右クリックし、Xcodeプロジェクトで.xibファイルの「情報を見る」をやって、そして「file.xib」の代わりに「ソースコードであることをそのタイプを変更します。 xib "とする。この2番目の変更がなければ、はロードされません!奇妙な。しかし、これは最終的に問題でした!

関連する問題