如何将数据传递到 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 之间传递数据