私はiOSのにかなり新たなんだ、とここで説明するように、別のビューコントローラ内からビューコントローラを提示しようとしています:私は開始別のUIViewController内部からUIViewControllerを表示しますか?
(第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)
NIBファイル名が正しく入力されました。initWithNibName:@ "HighScore"、あなたのプロジェクトのHighScore.xibファイルが正しいことを確認してください...! – Dinesh
はい、上で述べたように、それはプロジェクトと「バンドルリソースのコピー」セクションにもあり、正しく名前が付けられています。 –