如何将数据传递到 UIView 侧的嵌入式 UIViewController - Swift 5

Posted

技术标签:

【中文标题】如何将数据传递到 UIView 侧的嵌入式 UIViewController - Swift 5【英文标题】:How to pass data to a embedded UIViewController in side a UIView - Swift 5 【发布时间】:2019-09-27 07:53:06 【问题描述】:

有一个视图控制器 B。因此,在 UIView 中的 viewController A 中嵌入了 B 作为子视图控制器。现在,需要在子视图控制器 B 中调用 api 作为子视图添加。因此,只有在将 B 添加为子项时才需要设置检查,然后才需要点击此 api。请在这方面提供帮助。

下面是代码,我如何在 A viewController 中嵌入 B 作为子 View:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vcController: UIViewController = storyboard.instantiateViewController(withIdentifier: "BNameViewController") as! BNameViewController

    //add as a childviewcontroller
    addChild(vcController)

     // Add the child's View as a subview
     viewBList.addSubview(vcController.view)
    vcController.view.frame = viewBList.bounds
     vcController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

     // tell the childviewcontroller it's contained in it's parent
    vcController.didMove(toParent: self)

viewBList 是视图控制器 A 中的 UIView。 因此,在这种情况下,现在需要在 VC B 中调用 api,而不是当我们从任何其他 VC 导航到 B 时。我尝试通过在 VC B 中声明相同的值和来自 A 的传递值来传递布尔值或字符串,但这是行不通的。请指导。希望我把我的问题说清楚了,如果有任何疑问,请随时提出。

【问题讨论】:

请看我的回答。 ***.com/a/58130350/6197968 【参考方案1】:

有很多方法可以做到这一点,当您从其他视图控制器导航到视图控制器 B 时,您的 navigationController 属性不为零。

在这种情况下你可以这样检查

override func viewDidLoad(animated: Bool) 
    super.viewDidLoad(animated: animated)
    //If navigating from some view controller then 
    if self.navigationController != nil 
        //Code here for case, when you are navigating from some one 
    

    //View controller is  child of someone
    if (self.navigationController == nil || self.presentingViewController == nil || self.parent != nil ) 
        //This is your case, 
        // hit api here
    

【讨论】:

我们可以在某个地方添加它来自哪个 VC 来识别它是否被许多 VC 添加为子项 另外还让我知道如何删除子视图

以上是关于如何将数据传递到 UIView 侧的嵌入式 UIViewController - Swift 5的主要内容,如果未能解决你的问题,请参考以下文章

在 UIView 和 UIViewController 之间传递数据

将本地视频嵌入到UIView中

如何将值从 XIB 传递到 UIView 初始化程序?

将 UIView 移动到新的超级视图并从 UITableViewCell 再次返回

将图像从 TableView 传递到 UIView

将数据从自定义表格视图单元格传递到 UIView 控制器