【发布时间】:2017-06-16 12:12:15
【问题描述】:
我想在 swift 3 中将字符串数据从父 vc 传递给子 vc。
我的孩子 vc 是容器视图。所以看我的代码:
class ParentViewController: UIViewController
@IBOutlet var continerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let vc = storyboard?.instantiateViewController(withIdentifier: "ChildVCID") as! ChildViewController!
vc?.myStr = "Hello Bro"
addChildViewController(vc!)
continerView.addSubview((vc?.view)!)
didMove(toParentViewController: vc)
}
}
我的孩子代码是:
class ChildViewController: UIViewController
var myStr:String!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
print("Str is: ",myStr)
}
如何解决这个问题?
【问题讨论】:
-
请按部就班,不要直接传数据,先尝试加载视图(添加子视图)。如果成功,则传递数据,尝试修改代码 var myStr:String!到 var myStr:String?。我确信你的代码是正确的,只是你缺少一些可选的东西。
-
请正确格式化您的代码。至少检查它是否正确设置。有很多问题我可以识别。两个类都没有左括号,不存在对 super.viewDidAppear 的调用,代码对齐,函数之间的空格,强制展开是邪恶的......等等
-
我建议在 ChildViewController viewDidAppear 的第一行添加
super.viewDidAppear(animated)。我不认为这会导致崩溃。 -
尝试在 childVCs viewDidAppear 中添加 super.viewDidAppear(animated),由 @MobileDan 建议
-
我认为
didMove(toParentViewController: vc)应该是didMove(toParentViewController: self)
标签: ios swift swift3 uicontainerview