web-dev-qa-db-ja.com

ナビゲーションコントローラーなしのpushViewController

UITableViewController型のクラスがあります。このクラスには、テーブルビューの編集ボタンを追加するために使用するタイプUINavigationBarのメンバーがあります。

このメソッドの使用は無効です。

[self.navigationController pushViewController:controller];

UITableViewControllerUINavigationControllerでラップせずに、テーブル行を選択した後、詳細ビューをビューにプッシュするにはどうすればよいですか?

14
dubbeat

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

任意の INavigationItem sをUINavigationBarにプッシュできます。ユーザーが戻るボタンを使用すると、バーのデリゲートに通知されるため、適切なアクションを実行できます。詳細については、 ドキュメント を参照してください。

6
Anomie

ナビゲーションコントローラーを使用したくない場合の最も近い代替手段は、モーダルビューコントローラーです。

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

これにより、コントローラーが下から画面にスライドします。コントローラーのmodalTransitionStyleを変更すると、コントローラーが反転したり、フェードインしたりできます。

コントローラを閉じるには、次のコマンドを呼び出します。

[self dismissViewControllerAnimated:YES completion:nil];
38
Filip Radelic

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

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

Navigation Controller attributes tab

15
José

UITableViewをUINavigationController内にラップし、UINavigationBarを非表示にします。

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

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

[self.navigationController popViewControllerAnimated:YES]
10
Petter

UINavigationControllerがないと、ViewControllerをプッシュできないのは事実です。むしろ、UIViewController.present(_ viewControllerToPresent:, animated:, completion:)を介してビューコントローラーをモーダルに提示します

ただし、カスタムセグエを作成して、ビューコントローラをプッシュ(またはその他の必要なアニメーション)であるかのように表示することは可能ですが、UINavigationControllerを使用すると作業が簡単になるようです。

ドキュメントへの関連リンクは次のとおりです。

INavigationControllerクラスリファレンス

トランジションアニメーションのカスタマイズ

モーダルビューコントローラーの提示

1
Joe149