2009-05-01 6 views
7

私はiPhone開発のnewbiです。まずボタンをクリックするUIViewControllerを持つアプリケーションを構築したいのですが、ボタンをクリックするとUINavigationコントローラが読み込まれます。ここで私が近づいmの方法です:UIViewControllerからサブビューとしてUINavigationControllerをロードする

  1. 私が押下されるボタンのため

    -(IBAction) PressMeFunc:(id) sender 
    

    を取ったのUIViewControllerクラスを作成しました。

  2. 次に、私はUIView xibファイルを作成しました。私はIBで必要な手順を実行しました。

  3. 次にAppDelegateで、ViewControllerのインスタンスをウィンドウのサブビューとして追加しました。

これまでは問題ありません。

次に、ボタンを押したときにナビゲーションコントローラをロードするにはどうすればよいですか?

私はウィンドウベースのアプリケーションからnavigationControllerプロジェクトをビルドする方法を知っていますが、UIViewのサブビューとしてNavigationControllerを実行するのは苦労しています。

お手数をおかけします。

答えて

8

NavigationControllerは、使用時に画面を引き継ぐように設計されているため、元のViewControllerからNavigationControllerへの移行をどのように管理するかを決定する必要があります。これを行うには、presentModalViewControllerを使用するか、元のビューを削除して、NavigationControllerをプログラム的に入れ替えます。

ここには、プログラムでNavigationControllerを設定するためのthe Apple documentationがあります。

コードは(Appleのドキュメントからの)このような何か見に行くされて:あなたはNavigationController作成し、それにその最初のViewControllerを追加したら、今

GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease]; 
UINavigationController *navigationController = 
[[UINavigationController alloc] initWithRootViewController:groupsController]; 

を、あなたはそれに移行する必要があります。あなたはCATransitionsであることを行うことができ、または

[myViewController presentModalViewController: navigationController]; 
+0

ありがとうございました。返信いただきありがとうございます。 あなたが言及したAppleのドキュメントをダウンロードしました。 私はそれを介してUIViewControllerからNavigationControllerをロードしようとしますが、presentModalViewControllerが何であるかわかりません。 実際には、UIViewControllerにあるボタンをクリックするとNavigationControllerにxmlをロードします。あなたが唯一のメインウィンドウにuinavigationcontroller年代を追加しない限り に関して、 Xcodermi2 – XcoderMi2

+2

これは、Appleの恥であるが、多くの問題があり、彼らは少なくとも答えると10のためのドキュメント – valexa

5

とあなたは別のビューコントローラによって管理ビューにサブビューとしてのUIViewControllerの(ナビゲーションを含む)のビューを追加してはいけません。

がここに関連する読み取りです:あなたのケースでは http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

、何を行うことができ、ウィンドウにナビゲーションコントローラのビューを追加し、からのViewControllerのビューを削除しています。

:ここで提案されたとして、あなたはまた、モーダルビューコントローラとして追加することができ、またはあなたが最初のビューコントローラナビゲーションコントローラを作ることができ、そのナビゲーションコントローラのスタックに、第二ナビゲーションコントローラをプッシュ

[viewController.view removeFromSuperview]; 
[window addSubview:navigationController.view]; 

[navigationController pushViewController:secondNavigation animated:NO]; 

編集:あわやちょうど私が09の質問に答えるよ気づい

編集#2:これはまだ、iOSの5、彼らは追加したのUIViewController封じ込めのものとは無関係であることをチェックする機会がありませんでしたことがありそれは、あなたがあなたはこの答えを読んでいるかもしれません。

+2

1でメモしてきた可能性が'09の質問に答えるために! :) – Jann

関連する問題