2017-07-17 12 views
0

ナビゲーションコントローラに埋め込まれたPageViewControllerのログイン画面があります。私の理解では、私のPageViewControllerナビゲーションバーを与えるためにルートナビゲーションコントローラを提示する必要があります。ViewControllerの埋め込みNavigationControllerをプログラムで表示する

したがって、PageViewControllerをプログラムで提示することはできません。

PageVCNavVCのルートビューコントローラとして設定して、NavVCに埋め込みました。

この問題を解決する最も洗練された方法は何ですか?私はPageViewController(そのNavigationControllerに埋め込まれています)をアプリ内の複数の場所から表示できるようにする必要があります。

+0

を必要な場所あなたはこのコードを使用することができますを提示する場所さて、あなたはUINavigationControllerをプッシュする必要がある代わりに、 PageViewController。 NavVCをどのようにプッシュし、PageVCをNavVCに埋め込むかをコードに記入してください。 –

答えて

0

多分もっとコードサンプルを提供できますか?あなたの状況が何であるかは分かりません。

1つの提案は、単にそれはあなたが持っているあなたの最初のビューとしてUIViewController、またはUITabBarControllerあるかどうか、あなたが持っているものは何でも管理コントローラからごPageViewControllerが含まれていることからNavControllerを提示することです。いずれにしても、UINavigationControllerをルートとして表示または設定する必要があります。あなたのPageVC宣言クラスメソッド

class func viewController() -> PageVC { 
    return UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Your Identifier") as! PageVC 
} 

+0

しかし、私はそれをプログラム的にどのように提示するでしょうか?私は 'NavigationController'にリンクされたカスタムクラスを持っていません。それを達成するコード行を投稿できますか? – Marmelador

+0

'UIViewController'には、その方向からアクセスしようとすると、' navigationController'というオプションのプロパティがあります。それ以外の場合、 'UIViewController'関数' func present(UIViewController、animated:Bool、completion:(() - > Void)?= nil) 'を使用して、navControllerに最初のパラメータ(' UINavigationController' 'UIViewController'から継承します) – cloudcal

0

あなたは

let vc = PageVC.viewController 
    let nav = UINavigationController.init(rootViewController: vc) 
    self.present(nav, animated: true, completion: nil) 

あなたは正しいです

+0

しかし、それは新しいNavVCを作成します。それは、私がストーリーボード上でNavVCで設定したすべての設定を無視することになります。 – Marmelador

+0

あなたはそれをやっている理由アプリケーション全体に影響を与えるような外観で、プログラムでナビゲーション設定を適用する必要があります。しかし、あなたはストーリーボードのナビゲーションコントローラに識別子を与え、 'viewController()'メソッドをそれぞれ変更することができます。 –

関連する問題