代码之家  ›  专栏  ›  技术社区  ›  John

addChildViewController方法仅用于将子ViewController添加到containerViewController?

  •  0
  • John  · 技术社区  · 7 年前

    我在苹果上看到了这种方法的描述

    func addChildViewController(_ childController: UIViewController)
    

    此方法仅由自定义容器视图控制器的实现调用。如果重写此方法,则必须在实现中调用super。

    我明白了,人们使用的例子太多了 addChildViewController 到处都没有 containerViewController .

    例如:我没有使用containerView。我在下面添加了类似的内容?°t是否正确?

       // Create child VC
         let childVC = UIViewController()
    
        // Set child VC
        self.addChildViewController(childVC)
    
        // Add child VC's view to parent
        self.view.addSubview(childVC.view)
    
        // Register child VC
        childVC.didMove(toParentViewController: self)
    
        // Setup constraints for layout
        childVC.view.translatesAutoresizingMaskIntoConstraints = false
        childVC.view.topAnchor.constraint(equalTo: heroView.bottomAnchor).isActive = true
        childVC.view.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
        childVC.view.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
        childVC.view.heightAnchor.constraint(equalToConstant: height).isActive = true
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   EmilioPelaez    7 年前

    正如文档所述,该方法旨在由可以包含另一个视图控制器的视图控制器使用。导航和选项卡栏控制器就是一个例子。

    例如,如果您实现了一个自定义控制器,当您设置 bottomHalfViewController 属性,您可以调用 addChildViewController 方法让您的控制器知道它应该将视图控制器作为其子级处理。

    这意味着它将转发所有视图生命周期调用,如 viewWillAppear: