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...

addNewFile

3. la sous-classe de SampleProtocol NSObject comme indiqué ci-dessous

setProtocolName5 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 :

delegateLabel9. 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. .

delegateResult