[解決済み] presentViewControllerとナビゲーションバーの表示
質問
ビューコントローラを階層化し、最上位のコントローラをモーダル表示させています。
'UIViewController:presentViewController:viewControllerToPresent:animated:completion'
presentViewController:animated:completion:』のdocsに注意。
iPhoneとiPod touchでは、提示されるビューは常にフルスクリーンです。 iPadでは、プレゼンテーションは modalPresentationStyleプロパティの値に依存します'。
modalPresentationStyle」については、ドキュメントに書かれています。
プレゼンテーションスタイルは、モーダルに表示されるビューコントローラが画面上にどのように表示されるかを決定します。iPhone と iPod touch では、モーダル ビュー コントローラーは常にフルスクリーンで表示されますが、iPad では、いくつかの異なる表示オプションがあります。
ビュー コントロールが表示された後、ナビゲーション バーがステータス バーの下に表示されるようにする方法はありますか? このドキュメントは、iPhone/iPod のオプションはなく、iPad でのみ表示されると解釈すべきでしょうか?
以前は、私は
'UIViewController:presentModalViewController:animated'
を使用していましたが、iOS 5.0 以降、この API は非推奨となったため、新しい API に切り替えています。
視覚的には、新しいコントローラを画面の下からスライドさせて、古い API がそうであったようにすることを望んでいます。
[コードで更新中]。
// My root level view:
UIViewController *vc = [[RootViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
navController = [[UINavigationController alloc] initWithRootViewController:vc];
....
// Within the RootViewController, Second view controller is created and added
// to the hierarchy. It is this view controller that is responsible for
// displaying the DetailView:
SecondTierViewController *t2controller = [[SecondTierViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:t2controller animated:YES];
// Created by SecondTierViewController
DetailViewController *controller = [[DetailViewController alloc] initWithNibName:nil
bundle:[NSBundle mainBundle]];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
controller.modalPresentationStyle = UIModalPresentationCurrentContext;
[self.navigationController presentViewController:controller
animated:YES
completion:nil];
どのように解決するのですか?
確かにiPhoneでビューコントローラをモーダルに表示すると、ナビゲーションコントローラのトップビューコントローラに表示するなど、どのように表示しても常にフルスクリーンで表示されることになります。しかし、以下の回避方法で常にナビゲーションバーを表示させることができます。
そのビューコントローラをモード表示するのではなく、そのルートビューコントローラを希望するビューコントローラとして設定したナビゲーションコントローラをモード表示します。
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:myViewController];
//now present this navigation controller modally
[self presentViewController:navigationController
animated:YES
completion:^{
}];
ビューがモーダルに表示されると、ナビゲーションバーが表示されるはずです。
関連
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOS 13 のフルスクリーンでモーダルを表示する
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。
-
[解決済み] UIViewControllerの上にclearColor UIViewControllerを表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] テキストフィールドを移動する方法(次へボタン/完了ボタン)
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法
-
[解決済み] Swift 3でディスパッチキューを作成する方法
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。
-
[解決済み] iOS 8のNavigationBarのバー、色合い、タイトルテキストの色