Դաս 5 – iOS Development։ Պատվիրակներ (Delegates)

0

Պատվիրակի Օրինակ

Եկեք ենթադրենք, որ օբյեկտ A-ն ազդանշան է անում օբյեկտ B-ին գործողություն կատարելու համար:  Երբ գործողությունը ամբողջական է, օբյեկտ A-ն պետք է իմանա, որ B-ն ավարտել է հանձնարարությունները և անհրաժեշտ գործողությունները:

key կոնցեպտները վերևի օրինակի հետևյալն են −

  • A-ն B-ի պատվիրակ օբյեկտն է:
  • B-ն A-ի ռեֆերենս կունենա:
  • A-ն կիրականացնի B-ի մեթոդները:
  • B-ն կտեղեկացնի A-ին պատվիրակի մեթոդների մասին:

Պատվիրակ ստեղծելու քայլերը

Քայլ 1. Առաջինը, ստեղծեք միակ տեսադաշտի հավելված:

Քայլ 2. Ապա սեղմեք File -> New -> File…

addnewfileՔայլ 3. Ապա սեղմեք Objective C Class և կլիկ արեք Next:

Քայլ 4. Անուն տվեք class-ին, օրինակ, SampleProtocol subclass-ով NSObject ինչպես օրինակում է ցուցադրված:

setprotocolnameՔայլ 5. Ապա սեղմեք ստեղծել:

Քայլ 6. Ավելացրեք արձանագրություն SampleProtocol.h ֆայլին և թարմացված կոդը հետևյալը կլինի:

#import <Foundation/Foundation.h>
// Protocol definition starts here 
@protocol SampleProtocolDelegate <NSObject>
@required
- (void) processCompleted;
@end
// Protocol Definition ends here
@interface SampleProtocol : NSObject

{
   // Delegate to respond back
   id <SampleProtocolDelegate> _delegate; 

}
@property (nonatomic,strong) id delegate;

-(void)startSampleProcess; // Instance method

@end

Քայլ 7. Իրագործեք instance մեթոդը թարմացնելով SampleProtocol.m ֆայլը ինչպես այստեղ ցուցադրված է:

#import "SampleProtocol.h"

@implementation SampleProtocol

-(void)startSampleProcess{
    
    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate 
	selector:@selector(processCompleted) userInfo:nil repeats:NO];
}
@end

 

Քայլ 8. Ավելացրեք UILabel ViewController.xib-ում, ապրանքանիշը շարժելով օբյեկտ գրադարանից դեպի UIView, ինչպես ցուցադրված է այստեղ:

delegatelabelՔայլ 9. Ստեղծեք IBOutlet ապրանքանիշի համար և անվանեք այն  myLabel և թարմացրեք կոդը ինչպես հարկն է, ViewController.h-ում SampleProtocolDelegate ընդունելու համար:

#import <UIKit/UIKit.h>
#import "SampleProtocol.h"

@interface ViewController : UIViewController<SampleProtocolDelegate>
{
    IBOutlet UILabel *myLabel;
}
@end

Քայլ 10. Իրականացրեք պատվիրակ մեթոդը, ստեղծեք օբյեկտը SampleProtocol-ի համար և կոչ արեք startSampleProcess մեթոդին: Թարմացված  ViewController.m ֆայլը հետևյալն է: −

#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. Մենք կտեսնենք արդյունքը ինչպես հարկն է: Սկզբում ապրանքանիշը “processing…” է, որը թարմացվում է, երբ պատվիրակ մեթոդը կոչ է արվում SampleProtocol օբյեկտից:

delegateresult

Share.