J'ai mis en œuvre ViewControllerA
, qui est également un délégué d'un service (connectivité multipeer essentiellement) mis en œuvre. J'ai une vue Controller B
, où il y a une interaction de l'utilisateur et un bouton appelé "Envoyer". Dans l'action de ce bouton, j'espère qu'il appellera une méthode qui ne pourrait être exécutée qu'à partir de ViewController A, qui est une méthode du service Un délégué pour. Puis-je savoir s'il y a un bon moyen d'y parvenir? Je suis nouveau à Swift. S'il y a une meilleure façon de le concevoir, j'aimerais aussi le savoir. Je vous remercie.Comment appeler une méthode qui vient du service ViewController A délégué pour dans un bouton de ViewController B?
Répondre
La meilleure façon d'utiliser Delegate
De ViewControllerA
à ViewControllerB
. Moyens ViewControllerB créera un protocole et déléguera la propriété. ViewControllerA va conformer les méthodes de protocole et implémentera la méthode obligatoire et optionnelle (peut faire). Sur l'action de ViewControllerB send, vous appelez la méthode protocolaire en utilisant la propriété delegate. Ce qui appellera la méthode implémentée par ViewControllerA où vous pouvez appeler n'importe quelle méthode.
Protocole:
protocol ViewControllerBDelegate: class {
func didSendClicked(sender: UIbutton)
}
propriété déléguée:
@property (weak) id<ViewControllerBDelegate> delegate;
Protocole par ViewControllerA Conformes:
@interface ViewControllerA() <ViewControllerBDelegate>
@end
en oeuvre le procédé en viewControllerA:
- (void)didSendClicked:(UIButton *)sender {
// do stuff
}
Paramètres delegtae pour viewControllerA
viewControllerB.delegate = viewControllerA(ref)
invocation de méthode déléguée de viewControllerB
delegate?.didSendClicked(self)
Solution: 2 vous pouvez utiliser NSNotificationCenter
pour le même rappel.
Merci beaucoup. Je vais l'essayer. Serait-il acceptable d'avoir A en tant que délégué de someService et B en tant que délégué de A? – celluryz
cela dépend de la situation, parfois déléguer puis parfois des travaux postnotifcation. – Sandy