2016-05-07 10 views
1

Ich bin Neuling mit Swift und ich muss mehrere Kind View-Controller in einem UIContainerView mit Storyboard-Layout verwalten, aber Container-Ansicht bieten nur eine Kind-Ansicht auf einmal.Mehrere Kind ViewControllers in Einzelcontaineransicht

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

Antwort

1

In ios an einem Behälter Ansicht nur eine Verbindung mit einem Kind Controller „zu einer Zeit“, statt Kind-View-Controller wir einen UINavigationController mit seiner RootviewControlle nehmen,:

Ich habe bereits unter Code verwendet Wir können mehrere untergeordnete View Controller mit mehreren UINavigationController wie unten erwähnt laden.

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 
    } 

} 

In obigem Code i 4 Navigationssteuerungen erstellt und initialisiert sie in viewDidLoad Verfahren & auf „ActionOnSideMenuButtons“ Methode I Last childview Controller habe, wenn eine Seitenmenütaste abgestochen.