【问题标题】:Multiple child viewControllers in single container view单个容器视图中的多个子视图控制器
【发布时间】:2016-09-02 13:09:00
【问题描述】:

我是 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)

【问题讨论】:

    标签: ios swift uicontainerview


    【解决方案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
        }
    
    }
    

    在上面的代码中,我创建了 4 个导航控制器,并在 viewDidLoad 方法和“ActionOnSideMenuButtons”方法中初始化它们,每当点击任何侧面菜单按钮时,我都会加载子视图控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2017-12-13
      • 2019-06-15
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多