Swift 4: préparation(pour segue:) appelé viewDidLoad
J'ai 2 VCs: CouponVC et CouponFeedbackVC.
Coupon VC reçoit de la marque: la Marque! de son parentViewController.
Maintenant je veux passer le de la marque.nom à 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
}
}
}
Dans CouponFeedbackVC.swift
var brandName: String!
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad")
print(brandName)
}
override func awakeFromNib() {
print(brandName)
self.view.layoutIfNeeded()
}
Journal De La Console
nil
viewDidLoad
nil
StayUncle
awakeFromNib() -> viewDidLoad() -> prepare(pour segue:)
Je ne suis pas d'accéder à tout points de vente à partir CouponFeedbackVC.
Pourquoi est préparer(pour segue: ) appelé viewDidLoad() et awakeFromNib()?
- Comment êtes-vous d'effectuer des enchaînements en opération à partir de CouponVC ? À l'aide de storyboard opération push OU à l'aide de performSegueWithIdentifier ?
Vous devez vous connecter pour publier un commentaire.
Dans
awakeFromNib
vous référencezself.view
afin d'appelerlayoutIfNeeded
. Cela provoque l'affichage d'être chargé etviewDidLoad
à être appelé.Si vous supprimez l'appel à
self.view.layoutIfNeeded
deawakeFromNib
puisviewDidLoad
ne sera pas appelé jusqu'à ce que aprèsprepare(for:sender:)
. Il n'y a aucune raison de l'appelerlayoutIfNeeded
dansawakeFromNib
.viewDidLoad() et awakeFromNib() est appelé avant préparer(pour segue: ) parce que pour le passage des données à partir d'un point de vue contrôleur à l'autre, vous devez les initialiser et allouer l'objet Alors quand awakeFromNib est appelé, c'est la garantie d'avoir tous sa prise et l'action des connexions déjà établies et que viewDidLoad est appelé, ce qui donne assurety la-vue-contrôleur a chargé son point de vue de la hiérarchie dans la mémoire. Maintenant son prêt pour la transmission des données à partir d'un viewcontroller à l'autre.