Délégués iOS
Exemple de délégués
Supposons que l'objet A appelle B pour effectuer une opération. Une fois l'opération terminée, l'objet A doit savoir que l'objet B a terminé la tâche et l'objet A effectuera d'autres opérations nécessaires.
Les concepts clés dans l'exemple ci-dessus sont
- A est l'objet délégué de B
- B fait référence à un A
- A implémentera la méthode déléguée de B
- B notifie
via la méthode déléguée pour créer un délégué (Délégués) Objet
1. Créez une application à vue unique
2. Sélectionnez ensuite Fichier -> Nouveau -> Fichier...
3. la sous-classe de SampleProtocol NSObject comme indiqué ci-dessous
5 Ensuite, sélectionnez Créer
6 Ajoutez un protocole au dossier SampleProtocol.h et mettez à jour le code comme indiqué ci-dessous :
#import <Foundation/Foundation.h>// 协议定义@protocol SampleProtocolDelegate <NSObject>@required- (void) processCompleted;@end// 协议定义结束@interface SampleProtocol : NSObject{ // Delegate to respond back id <SampleProtocolDelegate> _delegate; }@property (nonatomic,strong) id delegate;-(void)startSampleProcess; // Instance method@end
7. Modifiez le fichier SampleProtocol.m. code pour implémenter la méthode d'instance :
#import "SampleProtocol.h"@implementation SampleProtocol-(void)startSampleProcess{ [NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate selector:@selector(processCompleted) userInfo:nil repeats:NO];}@end
8. Faites glisser l'étiquette de la bibliothèque d'objets vers UIView pour ajouter UILabel dans ViewController.xib, comme indiqué ci-dessous :
9. Créez une étiquette IBOutlet et nommez-la myLabel, puis mettez à jour le code comme indiqué ci-dessous et affichez le SampleProtocolDelegate dans ViewController.h
#import <UIKit/UIKit.h>#import "SampleProtocol.h"@interface ViewController : UIViewController<SampleProtocolDelegate>{ IBOutlet UILabel *myLabel;}@end
10 Complétez la méthode d'autorisation, créez un objet pour SampleProtocol et appelez la méthode startSampleProcess. Mettez à jour le fichier ViewController.m comme indiqué ci-dessous
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; SampleProtocol *sampleProtocol = [[SampleProtocol alloc]init]; sampleProtocol.delegate = self; [myLabel setText:@"Processing..."]; [sampleProtocol startSampleProcess];// Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}#pragma mark - Sample protocol delegate-(void)processCompleted{ [myLabel setText:@"Process Completed"];}@end
11. Vous verrez le résultat comme indiqué ci-dessous. Une fois la méthode d'autorisation appelée par l'objet SampleProtocol, le code du lanceur de balises sera également mis à jour. .