2016-04-30 13 views
0

私はViewControllerを持っていますmainVC - ナビゲーションビューとラッパービューの2つの部分で構成されています。ユーザーがNavigationViewのボタンの1つ、たとえばViewControllersの1つを押すと、vcがWrapperViewの中にロードされます。私のナビゲーションが表示され、ユーザーは依然としてナビゲーションビューのボタンを使用してビューを変更することができるように - 私が知りたいビュー内でナビゲーションコントローラを作成

addChildViewController(vc) 

    //size adjustment 
    vc.view.frame = contentView.bounds 
    WrapperView.addSubview(vc.view) 

は、それが可能WrapperViewの内側にNavigationControllerを置くことです。どのようにそれを行うことができますか?

enter image description here

答えて

4

はい。それは完全に可能です。 UINavigationControllerは、UIViewControllerの単なるサブクラスです。

ビューは、任意のビュー階層で通常のビューとして追加できます。ですから、あなたのラッパービューにナビゲーションコントローラーを追加してから、後続のViewControllerをUINavigationControllerに追加することができます。

は、だからあなたの場合には、あなたがこのような何かを行うことができます。

let navController = UINavigationController(rootViewController:mainVC) 
    self.addChildViewController(navController) 
    navController.view.frame = contentView.bounds 
    contentView.addSubview(navController.view) 

詳細ビューコントローラは、あなたのnavigationControllerに直接追加することができ

navController.showViewController(viewController2, sender: nil 

注:ここでは、自己があなたのwrapperviewを含むのViewControllerです。

+0

ありがとうございます - キャッチ! – moonvader

+0

あなたはWrapperView内のViewControllerから別のViewControllerを開く最良の方法は何ですか? – moonvader

+0

を追加したとします。 Navigation ControllerをWrapperビューのviewControllerとして設定し、私の答えで述べたようにrootViewControllerを開始しました。今、mainVCから別のViewControllerを開く必要がありますか?VC2? mainViewControllerの内部から、self.navigationController.showViewController(VC2、sender:nil)を簡単に呼び出すことができます。 –

1

はい、それはUIContainerViewを使用することにより可能です。詳細についてはApple's documentationをチェックしてください。

コンテナビューを希望のサイズ(あなたのケースではWrapperView Size)にすることができます。また、View Controllerとの特別なカスタムセグによって接続されたビューのサイズを取得できます。

ストーリーボードからviewControllerにcontainerviewをドラッグアンドドロップすると、より良いアイデアが得られます。

更新:

あなたのViewControllerにcontainerViewを追加します。

VCの横に表示されているストーリーボード埋め込みセグのコンテナビューを選択します。エディタembed in navigation controller

から

は今、あなたのコンテナビューのサイズに応じてサイズを変更しますキャンバスにして、コンテナビューコントローラCTRL +ドラッグから、新しいVCと新しいVCに新しいビューコントローラをドラッグして、それを押すと、それはのままそのサイズ

これは役に立ちます:

+0

私のWrapperViewの代わりにUIContainerViewを追加しました.UporterViewのNavigationView - ViewControllerのボタンを押したときに変更されています。しかし、NavControllerに組み込まれているViewControllerのボタンをクリックすると、新しいViewControllerがすべての画面をカバーし、NavigationViewが表示されません。 – moonvader

+0

いいえ、このようにすべきではありません。私はそれに応じて私の答えを更新しています。 – Lion

+0

答えが更新されます – Lion

関連する問題