2011-08-10 9 views
12

私はUITableViewController型のクラスを持っています。 このクラスには、テーブルビューの編集ボタンを追加するために使用するUINavigationBar型のメンバーがあります。navigationControllerのないpushViewController

このメソッドを使用する呼び出しは無効です。私はUINavigationControllerで私のUITableViewControllerを包むことなく、テーブルの行を選択した後、ビュー上に詳細ビューをプッシュすることができますどのように

[self.navigationController pushViewController:controller]; 

答えて

5

ナビゲーションコントローラがない場合、ビューコントローラをナビゲーションコントローラにプッシュすることはできません。コントローラーを押して、最上位のコントローラーとすべてを表示させたい場合は、UINavigationControllerを使用してください。

任意のUINavigationItemをあなたのUINavigationBarにプッシュできます。また、ユーザーが戻るボタンを使用したときにバーの代理人に通知され、適切な処置を取ることができます。詳細については、the documentationを参照してください。

35

ナビゲーションコントローラを使用したくない場合は、モーダルビューコントローラが最も適しています。

[self presentViewController:controller animated:YES completion:nil]; 

これは下から画面にコントローラーをスライドさせます、またはあなたは、コントローラのmodalTransitionStyleを変更した場合には、裏返したりしてフェードすることができ

を呼び出すだけコントローラを却下するには:。

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

あなたは私の一日の男、感謝を保存しました –

9

UINavigationController内でUITableViewをラップし、UINavigationBarを隠すだけです。

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

次に、ViewControllerをスタックからポップする戻るボタンを作成します。

[self.navigationController popViewControllerAnimated:YES] 
9

また、通常どおりナビゲーションコントローラを使用して非表示にすることもできます。

ストーリーボードを使用してナビゲーションコントローラを非表示にするには、それを選択して、属性インスペクタで[ナビゲーションバーを表示]をオフにします。他のコントローラは、各コントローラのナビゲーションバーを隠すことを提案するかもしれませんが、それは1ミリ秒間表示され消えてしまうという問題があります。

Navigation Controller attributes tab

1

それはUINavigationControllerずにビューコントローラをプッシュすることはできませんというのは本当です。 UIViewController.present(_ viewControllerToPresent:, animated:, completion:)

UINavigationControllerを使用すると、ビューコントローラをプッシュ(または他の任意のアニメーション)のように表示するカスタムセグを作成することができますより簡単に。ここで

は、ドキュメントへのいくつかの関連リンクです:

UINavigationController Class Reference

Customizing the Transition Animations

Presenting a Modal View Controller