2016-05-07 16 views
1

我是新手Swift我必須在一個UIContainerView中使用故事板佈局管理多個子視圖控制器,但容器視圖只能一次提供一個子視圖。單個容器視圖中的多個子viewControllers

我已經使用了下面的代碼:

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

回答

1

在IOS在容器視圖只能有一個孩子的控制器連接「在同一時間」,而不是子視圖控制器,我們可以採取一個的UINavigationController其RootviewControlle,我們可以使用多個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 
    } 

} 

在上面的代碼我已經在viewDidLoad方法&上「ActionOnSideMenuButtons」方法創建的4個導航控制器和初始化它們我有每當任何側面菜單按鈕的敲擊負荷childview控制器。

相關問題