با عرض سلام خدمت کاربران سایت پی وی لرن ، جلسه دیگری از آموزش دوره iOS را شروع می کنیم.در این جلسه درمورد سیستم عامل و Delegate در iOS توضیحاتی داده می شود.و برای درک بهتر مثال برای متد Delegate در ios زده می شود.
در ابتدا با مثال درک Delegate را شروع می کنیم.
مثال برای Delegate
فرض کنیم یک شی A یک شیء B را برای انجام یک عمل فراخوانی می کند. هنگامی که عمل کامل شود، شیء A باید بداند که B این کار را تکمیل کرده و اقدامات لازم را انجام داده است. اینکار با کمک Delegate به دست می آید.
مفاهیم کلیدی در مثال بالا :
مراحل ایجاد Delegate
مرحله ۱ : ابتدا، یک برنامه single view را ایجاد کنید.
مرحله ۲ : سپس این مسیر را انتخاب کنید :select File → New → File
مرحله ۳ : سپس کلاس Objective C را انتخاب کرده و روی Next کلیک کنید.
مرحله ۴ : نام کلاس را بدهید، مثلا SampleProtocol را با زیر کلاس به عنوان NSObject بنویسید، همانطور که در زیر نشان داده شده است.
مرحله ۶ : یک پروتکل به فایل SampleProtocol.h اضافه کنید ،کد به روز شده به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #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 |
مرحله ۷ : متد نمونه با به روز رسانی فایل SampleProtocol.m به صورت زیر نشان داده شده است:
1 2 3 4 5 6 7 8 9 | #import "SampleProtocol.h" @implementation SampleProtocol -(void)startSampleProcess { [NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate selector:@selector(processCompleted) userInfo:nil repeats:NO]; } @end |
مرحله ۸ : اضافه کردن یک UILabel در ViewController.xib با کشیدن برچسب از کتابخانه object به UIView .به تصویر زیر دقت کنید:
مرحله ۹ : ایجاد IBOutlet برای برچسب و نام آن به عنوان myLabel و به روز رسانی کد به شرح زیر برای اتخاذ SampleProtocolDelegate در ViewController.h.
1 2 3 4 5 6 7 | #import <UIKit/UIKit.h> #import "SampleProtocol.h" @interface ViewController : UIViewController<SampleProtocolDelegate> { IBOutlet UILabel *myLabel; } @end |
مرحله ۱۰ : اجرای متد Delegate در ios، ایجاد شی برای SampleProtocol و فراخوانی روش startSampleProcess.
فایل بروز شده ViewController.m به شرح زیر است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #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 |
مرحله ۱۱ : ما خروجی را به شرح زیر می بینیم. در ابتدا برچسب «…processing » را نشان می دهد، که وقتی یک روش delegate توسط شی SampleProtocol فراخوانی می شود، به روز می شود و تغییر می کند.
مثال بالا کاربرد Delegate در iOS را نشان می دهد.اگر تمام مراحل را درست رفته باشید خروجی نهایی به شما نمایش داده می شود.با ما همراه باشید تا عناصر UI در iOS در جلسه بعد آموزش داده شود.