dire que j'ai un contrôleur de vue de conteneur personnalisé (MainViewController) où je fais quelque chose comme ceci:
- (void)viewDidLoad { [super viewDidLoad]; HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; [self addChildViewController:homeVC]; [self.view addSubview:homeVC.view]; }
3 Réponses :
Vous pouvez utiliser délégué ou bloquer;
à l'aide de délégué fort> p> Créer un protocole: p> self.block();
Ok, donc il n'y a rien que je puisse tirer parti de l'API de confinement UIViewController?
Pas tout à fait sûr que ce poteau pourrait aider Vérifier cette
J'avais +1 ceci 3 fois si je pouvais. Non seulement cela a-t-il répondu à la même question pour moi, mais cela a avancé ma compréhension des blocs dix fois :)
La déclaration Typedef code> Le bloc a besoin d'un type comme ...
Typef Void (^ ActionBlock) (); code>
@Ricqian, je reçois une mauvaise erreur d'accès lorsque je mettant en œuvre le bloc pour gérer l'action de la vue enfant. J'ai posté ma question ici pourriez-vous m'aider à cela?
Il y a un autre moyen aussi ... Chaque contrôleur d'affichage dispose d'une propriété code> parentviewcontroller de code> afin que vous puissiez faire cela ...
in puis dans htH :) p> p> MainViewController code> Définissez une méthode pour l'action que vous souhaitez effectuer ... < / p>
homeviewcontroller code> vous pouvez faire ... p>
Bon chemin rapide et sale ici. Utilisez la réponse sélectionnée si vous avez un peu plus de temps pour créer le protocole. Merci Pedro!
Ceci est un modèle très courant. Le parent sera l'instance réelle qui gérera l'action, en fournissant un dans SWIFT 3: P> Vue du parent Contrôleur: P> protocole code> et un extension par défaut .
@IBAction func tapGo(_ sender: Any) {
(parent as? SomeProtocol)?.foo()
}
Merci beaucoup c'était juste ce que je cherchais :)