2016-09-04 2 views
0

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

0

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.

+0

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

+0

cela dépend de la situation, parfois déléguer puis parfois des travaux postnotifcation. – Sandy