1. ホーム
  2. ios

[解決済み] NavigationViewControllerでViewControllerを表示する swift

2023-07-03 18:47:03

質問

NavigationViewController -> MyViewController"というシステムがあり、プログラム的にMyViewControllerを第3のビューコントローラ内に表示したいのですが、どうすればよいでしょうか?問題は、私はそれを提示した後、MyViewControllerにナビゲーションバーを持っていないことです。あなたは私を助けることができますか?

var VC1 = self.storyboard.instantiateViewControllerWithIdentifier("MyViewController") as ViewController
self.presentViewController(VC1, animated:true, completion: nil)

どのように解決するのですか?

呼び出し presentViewController はビューコントローラを表示します。 モーダリ を表示します。既存のナビゲーション・スタックの外側です; それは、UINavigationController または他のものによって含まれるわけではありません。新しいビューコントローラにナビゲーションバーを持たせたい場合、2つの主なオプションがあります。

選択肢1. 新しいビューコントローラをモジュール的に表示するのではなく、既存のナビゲーションスタックにプッシュします。

let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
self.navigationController!.pushViewController(VC1, animated: true)

オプション 2. 新しいビューコントローラを新しいナビゲーションコントローラに埋め込み、新しいナビゲーションコントローラをモーダルに表示します。

let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
let navController = UINavigationController(rootViewController: VC1) // Creating a navigation controller with VC1 at the root of the navigation stack.
self.present(navController, animated:true, completion: nil)

このオプションは自動的に "戻る" ボタンを含まないことを心に留めておいてください。閉じるメカニズムを自分で構築する必要があります。

どれが最適かは、ヒューマン インターフェイス デザインの問題ですが、通常、最も理にかなっているものは明らかです。