2016-05-07 9 views
1

私はスウィフトで初心者です。複数の子ビューコントローラを1つで管理する必要があります。UIContainerViewストーリーボードレイアウトでは、コンテナビューは一度に1つの子ビューしか提供しません。 、我々はそのRootviewControlleで1 UINavigationControllerを取ることができます代わりに、子ビューコントローラの、唯一の「一度」1つのコントローラと接続コンテナビューでIOSで単一のコンテナビュー内の複数の子ビューコントローラ

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
var controller: UIViewController = storyboard.instantiateViewControllerWithIdentifier("HomeVC") as UIViewController 
self.containerViewA.addSubview(controller.view) 
self.addChildViewController(controller) 

答えて

1

私はすでにコードの下に使用しています以下で説明するように、複数のUINavigationControllerを使用して複数の子ビューコントローラを読み込むことができます。上記のコードで

var navController1 = UINavigationController() 
var navController2 = UINavigationController() 
var navController3 = UINavigationController() 
var navController4 = UINavigationController() 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    //navController1 
    let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("HomeVC") as! HomeVC 
    navController1 = UINavigationController(rootViewController: VC1) 
    navController1.navigationBarHidden = true 

    //navController2 
    let VC2 = self.storyboard!.instantiateViewControllerWithIdentifier("RoomControlesVC") as! RoomControlesVC 
    navController2 = UINavigationController(rootViewController: VC2) 
    navController2.navigationBarHidden = true 

    //navController3 
    let VC3 = self.storyboard!.instantiateViewControllerWithIdentifier("TelevisionVC") as! TelevisionVC 
    navController3 = UINavigationController(rootViewController: VC3) 
    navController3.navigationBarHidden = true 

    //navController4 
    let VC4 = self.storyboard!.instantiateViewControllerWithIdentifier("EntertainmentVC") as! EntertainmentVC 
    navController4 = UINavigationController(rootViewController: VC4) 
    navController4.navigationBarHidden = true 

    let btn = UIButton() 
    btn.tag = 1 
    self.ActionOnSideMenuButtons(btn) 
} 

@IBAction func ActionOnSideMenuButtons(sender: AnyObject) 
{ 
    for view in containerViewA.subviews{ 
     view.removeFromSuperview() 
    } 
    switch sender.tag 
    { 
    case 1:// Home 

     NSLog("Home Button tapped") 
     addChildViewController(self.navController1) 
     self.navController1.view.frame = self.containerViewA.bounds 
     self.containerViewA.addSubview(navController1.view) 
     break 

    case 2:// Room Controles 
     NSLog(" Room Controles Button tapped") 
     self.navController2.view.frame = self.containerViewA.bounds 
     self.containerViewA.addSubview(navController2.view) 
     break 
    case 3:// Television 
     NSLog("Television Button tapped") 
     self.navController3.view.frame = self.containerViewA.bounds 
     self.containerViewA.addSubview(navController3.view) 
     break 
    case 4:// Entertainment 
     NSLog("Entertainment Button tapped") 
     self.navController4.view.frame = self.containerViewA.bounds 
     self.containerViewA.addSubview(navController4.view) 
     break 

    default: 
     break 
    } 

} 

iが4つのナビゲーションコントローラを作成し、サイドメニューボタンのいずれかをタップするたびに、私は負荷childviewコントローラを有する「ActionOnSideMenuButtons」法にviewDidLoadメソッド&でそれらを初期化しています。

関連する問題