2011-07-11 4 views
1

次のような状況でUINavigationControllerを使用するにはどのようなコードが必要ですか?UINavigationControllerを第2レベルのダウン(Delegate/RootControllerレベルからではなく)に設定する方法

  • ベースアプリケーションがIは、XCodeの4テンプレート「ユーティリティアプリケーション」に基づいて、フリップサイドビューでMAINVIEW & FlipSideViewコントローラ(すなわちMAINVIEWはUINavigationControllerを使用していないが、モーダルFlipSideviewを開く)
  • を有しています構成設定を実行するようにセットアップされたUITableViewを持っている
  • このFlipSideview UITableViewの1つの行をクリックしてから、UINavigationControllerコンセプトを使用して、プログラムによって生成されたUITableViewを横切ってトランジションして、値を入力し終わったら、左上のBACKボタンをクリックします(whi CH UINavigationController)を全体的に、MAINVIEWとFlipSideViewは、テンプレートからXIBファイルを(持っているでしょう)
  • 再XIBファイルを供給しますが、プログラムで生成された「選択値は、」ビューは1

を持っていないでしょうだから私は実際にどこで/どのように作成する/保持する/この場合、UINavigationControllerを使用するかわからないのですか? FlipSideView XIBを変更する必要がある場合、UINavigationController変数はどこに保持されますか?

PS。 FlipSideview自体を変更して、ナビゲーションバーを上部に組み込む必要がありますか? (それから、私は、既存のテンプレートのDONEボタンをナビゲーションバーから新しいUINavigationController nav barにモードする必要があります)

PSS。これを試してもエラーが発生します。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.uiNavController = [[UINavigationController alloc] initWithRootViewController:self]; 
    self.navigationController = self.uiNavController; 
    // ==> error: object cannot be set - either readonly property or no setter found 
} 
+0

にそれを変更する必要がありますか? – saadnib

答えて

1

この場合、FlipSideViewController自体にUINavigationControllerDelegateを実装する必要があります。

FlipSideViewをどのように表示していますか?

FlipSideViewController *flipSideView = [[FlipSideViewController alloc] init..]; 
[self presentModalViewController:flipSideView animated:YES]; 
[flipSodeView release]; 

次にuが私はあなたがいないアプリデリゲートからではなく、他のビューコントローラからナビゲーションコントローラを追加したい、あなたの質問について明確mがあれば、私は右のmはuが

FlipSideViewController *flipSideView = [[FlipSideViewController alloc] init..]; 
UINavigationController *uiNavController = [[UINavigationController alloc] initWithRootViewController:flipSideView]; 
[self presentModalViewController:uiNavController animated:YES]; 
[flipSideView release]; 
[uiNavController release]; 
+0

ありがとう – Greg

1

UINavigationControllerは、階層のROOTビューコントローラとして設計されています。

あなたの例では、FlipSideViewControllerにNavigationBarを非表示にしてUINavigationControllerを保持させる必要があります。次に、あなたのTableViewControllerを 'root'ビューとしてスタックにプッシュすることができます。

ユーザーがテーブルビュー内のセルをタップすると、新しいビュー&をself.navigationControllerのスタックにプッシュすることができます。新しいビューのviewWillAppearメソッドにコードを追加して、navigationBar &のコードをviewDidに表示して、ナビゲーションバーを再度非表示にするようにしてください。

+0

ありがとうございました。ありがとうございました。 – Greg

関連する問題