ios - swift 4 : prepare(for segue:) being called after viewDidLoad

标签 ios swift segue swift4

我有 2 个 VC:CouponVCCouponFeedbackVC

Coupon VC 从它的 parentViewController 接收 brand: Brand!。 现在我想将 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
        }
    }
}

在 CouponFeedbackVC.swift 中

var brandName: String!
override func viewDidLoad() {
    super.viewDidLoad()
    print("viewDidLoad")
    print(brandName)
}

 override func awakeFromNib() {
    print(brandName)
    self.view.layoutIfNeeded()
}

控制台日志

nil
viewDidLoad
nil
StayUncle

awakeFromNib() -> viewDidLoad() -> prepare(for segue:)

我没有访问 CouponFeedbackVC 的任何 channel 。

为什么 prepare(for segue: )viewDidLoad()awakeFromNib() 之后被调用?

最佳答案

awakeFromNib 中,您正在引用 self.view 以调用 layoutIfNeeded。这会导致加载 View 并调用 viewDidLoad

如果您从 awakeFromNib 中删除对 self.view.layoutIfNeeded 的调用,则 viewDidLoadprepare(对于:发件人:)。没有理由在 awakeFromNib 中调用 layoutIfNeeded

关于ios - swift 4 : prepare(for segue:) being called after viewDidLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617760/

相关文章:

ios - App Store (iPhone) 部署后CorePlot Chart 标签不显示在图表中

ios - Swift:使用 NSLock 或并发队列的安全线程

swift - 在设备上模糊使用 'subscript'

ios - navController.topViewController 还是 navController.viewControllers.first?

ios - 在 prepareForSegue : 中传递参数

javascript - 在 Swift WKWebView 中捕获 window.postMessage

javascript - 如何使用 onClick 将文本框值递增/递减一个

SwiftUI - 两个导航栏

objective-c - 在 prepareForSegue 期间获取 [UIViewController <null selector>] 时尝试将值分配给属性?

ios - Swift 自定义 UIAlertView