2016-05-07 7 views
1

Я новичок с Swift, и мне нужно управлять несколькими контроллерами дочерних представлений в одном UIContainerView с раскладкой раскадровки, но в представлении контейнера предоставляется только один дочерний вид.Несколько дочерних представленийКонтроллеры в одном контейнере

Я уже использовал ниже код:

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 с 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 
    } 

} 

В коде выше я создал 4 навигационные контроллеры и инициализирует их в методе viewDidLoad & на «ActionOnSideMenuButtons» метод, который я контроллер childview нагрузки всякий раз, когда какой-либо из меню кнопки на стороне повернутой.

 Смежные вопросы

  • Нет связанных вопросов^_^