【问题标题】:Get Parent ViewController from within embedded child UIViewController从嵌入式子 UIViewController 中获取父 ViewController
【发布时间】:2018-10-21 12:43:18
【问题描述】:

如何使用容器视图从嵌入其中的控制器中获取对父 UIViewController 的引用?

我想从 Child 中访问 Parent

【问题讨论】:

    标签: ios uiviewcontroller uikit uicontainerview


    【解决方案1】:

    当你在容器视图中添加视图控制器时,它被添加为子视图控制器

    您可以像以下方式访问孩子

      if let yourVC:YourViewController = self.childViewControllers.first(where: {$0 is yourVC:YourViewController}) as? YourViewController {
            // Here you got it 
    
        }
    

    您可以使用 viewController 的 parent 属性访问 Parent

      if let parent = self.navigationController?.parent as? ParentControllerType {
    
         // Do what you want with the parent.
    
       } 
    

    看到这个https://developer.apple.com/documentation/uikit/uiviewcontroller/1621362-parent

    希望对你有帮助

    【讨论】:

    • 感谢您的回复,但我想从孩子内部访问父母。
    • @MuddassirAhmed 您可以使用 .parent 属性访问它
    • 现在让我检查一下。
    • ``` if let parent = self.navigationController?.parent as? ParentControllerType { // 对父母做你想做的事。 } ```
    • @MuddassirAhmed 您需要使用if let 检查您的父母,这是一个好习惯。 :)
    【解决方案2】:

    有一个简短而甜蜜的方法:向上层级,直到获得“真正的”父级,即功能性方式:

    extension UIViewController {
        var trueParent: UIViewController {
            parent?.trueParent ?? self
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多