Ce que je veux réaliser:
L'utilisateur appuie sur le bouton dans ViewController, puis la couleur du bouton placé dans la vue du conteneur doit changer sa couleur en rouge.
Comment puis-je accéder au bouton placé dans la vue du conteneur, à partir de ViewController?
Pas à pas:
prepareForSegue(_:sender:)
.segue.identifier
est égal à l'identificateur spécifié à l'étape 1.segue.destinationViewController
dans votre propriété à l’étape 2.viewDidLoad()
.Exemple:
var containerViewController: YourContainerViewControllerClass?
let containerSegueName = "testSegue"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == containerSegueName {
containerViewController = segue.destinationViewController as? YourContainerViewControllerClass
}
}
Je recommande de ne pas compter sur segue.identifier
, mais plutôt de tester directement le type destination
:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if let vc = segue.destination as? YourViewController {
vc.someVariable = true
}
}
De cette façon, vous évitez les erreurs avec un nom de lieu mal orthographié.
Swift 3 pour macOS:
// MARK: - Container View Controller
var containerViewController: ContainerViewController?
let containerSegueIdentifier = "Container Segue"
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if segue.identifier == containerSegueIdentifier {
if let connectContainerViewController = segue.destinationController as? FormationViewController {
formationViewController = connectContainerViewController
}
}
}
Vérifier l'identifiant et la classe du contrôleur.
var contentViewController : UIContentViewController?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == containerSegueName {
contentViewController = segue.destination as? UIContentViewController
}
}