Ary*_*rma 4 ios segue swift swift4
我有2个VC:CouponVC和CouponFeedbackVC.
优惠券VC收到品牌:品牌!来自其parentViewController.现在我想将brand.name传递给CouponFeedbackVC.
CouponVC.swift
var brandName: String!
override func viewDidLoad() {
super.viewDidLoad
brandName = brand.name
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "couponToFeedBack" {
if let vc = segue.destination as? CouponFeedbackVC {
print(brandName)
vc.brandName = self.brandName
}
}
}
Run Code Online (Sandbox Code Playgroud)
在CouponFeedbackVC.swift中
var brandName: String!
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad")
print(brandName)
}
override func awakeFromNib() {
print(brandName)
self.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
控制台日志
nil
viewDidLoad
nil
StayUncle
Run Code Online (Sandbox Code Playgroud)
awakeFromNib() - > viewDidLoad() - > prepare(for segue :)
我没有从CouponFeedbackVC访问任何商店.
为什么在viewDidLoad()和awakeFromNib()之后调用(for segue :)?
在awakeFromNib你正在引用self.view以便打电话layoutIfNeeded.这会导致加载和viewDidLoad调用视图.
如果您删除呼叫self.view.layoutIfNeeded从awakeFromNib那么viewDidLoad将不会被调用,直到后prepare(for:sender:).没有理由打电话给layoutIfNeeded在awakeFromNib.
| 归档时间: |
|
| 查看次数: |
11340 次 |
| 最近记录: |