2012-02-10 4 views
0

私のアプリはいくつかのボタンを含むビューから始まります。私は、押されたボタンに応じて異なるビューにナビゲートし、それらに異なるパラメータを渡したいと思います。ストーリーボードのボタンを使用してNavigationControllerに埋め込まれたビュー間を移動します

enter image description here 次のように

マイストーリーボードが見えます。

ご覧のとおり、メインビューでボタンを押すと、ナビゲーションコントローラに埋め込まれたテーブルビューが呼び出されます。そして、これは私に多くの問題を引き起こしています!

私は適切なアプローチを選択したかどうか、またはビューの代わりにナビゲーションコントローラでアプリケーションを起動する必要があるかどうかはわかりません(このソリューションを試しましたが、私のホームページ私はナビゲーションバーを望んでいないし、それを見えるようにするかどうかは、視覚的にうまくいきません)。

私の初期のアプローチの実現可能性を確認した場合、どのようにいくつかのパラメータを渡して、目的のビューに移動できますか?

------編集:

私は最終的に実用的なソリューションを見つけました。ナビゲーションコントローラは、アプリケーションの最初のコントローラです。ビューは標準的なセグに接続されています。私のテーブルビューで

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[self navigationController] setNavigationBarHidden:YES animated:YES]; 
} 

:私のホームビューで

このように

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[self navigationController] setNavigationBarHidden:NO animated:YES]; 
} 

、あなたがボタンを押すと、新しいビューがアニメーションで表示され、それがありますナビゲーションバーと同じです。また、テーブルビューで戻るボタンを押すと同じことが起こります。

コードの行はもう必要ありません。

あなたが完璧にするためにできる唯一の中毒は、アプリが読み込まれたときにアニメーションなしでホームバーのナビゲーションバーを非表示にすることです。非常によく似たケースで

yassa

答えて

1

ホームページは、このナビゲーションコントローラのルートビューコントローラになるように、私は、ストーリーボードの最初のコントローラとして、ナビゲーションコントローラを置きます。

だから、ビュー・コントローラ・スタックは、次のようになります。

ストーリーボード - HomeViewController - あなたはただ非表示にする必要があるのホームページのナビゲーションバーを非表示にしたい場合は/からそれを示してYourTableViewController

コード使用:

[self.navigationController setNavigationBarHidden:YES animated:NO]; 

とビューコントローラの使用でそれを表示する:

[self.navigationController setNavigationBarHidden:NO animated:NO]; 

これらのコード行は、ビューを表示することに関連したメソッドに移動する必要があります。またはprepareForSegueへ::viewDidAppear方法

EDIT: 私も私のアプリでは次のビューコントローラをプッシュで多少の遅延を追加しました:

[self.navigationController setNavigationBarHidden:NO animated:YES]; 

    // Showing navigation bar animation 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{ 
     [self.navigationController pushViewController:viewController animated:YES];   
    }); 
+0

私が書いたように、私はすでにこのソリューションを試してみた:私は」ホームビューのViewWillAppearでナビゲーションバーを非表示にして、テーブルビューのViewWillAppearに表示しようとしました。本当に醜い効果!!! :( – yassassin

+0

私の場合は、次のビューコントローラ(あなたの場合はテーブルビューコントローラ)を提示するのにいくらかの遅延を加えるだけで十分でした。私は上記のようにコードを編集しました。 – krzymar

+0

更新された質問!もう一度ありがとう! – yassassin

関連する問題