iOS delegater Tutorial

du kommer att få Slututgång:

delegera demo

vad är delegat?

delegat är helt enkelt bara ett kommunikationsmedel mellan objekt av iOS-applikationer. Du kan tänka delegation som ett enkelt sätt att ansluta objekt och kommunicera med varandra. Med andra ord kan vi säga att delegat tillåter ett objekt att skicka meddelande till ett annat objekt när någon händelse inträffar. Låt oss förstå detta med ett verkligt exempel. Antag att det finns något kontor med 5 räknare. Du går in på kontoret och går till räknare 1 och skickar in några detaljer på den räknaren.

nu måste dina uppgifter passera genom en process som counter 3 vet men counter 1 inte gör det.så counter 1 kommer att berätta för dig att vänta en stund och skicka dina uppgifter till counter 3 för att få processen klar. I det här fallet är counter 3 den delegat som hanterar dina händelser, som hänvisas av counter 1. När counter 3 har slutfört behandlingen av dina data skickar den tillbaka meddelandet till counter 1 och informerar om att processen är klar och du kan gå vidare nu.

exempel:

du kanske har arbetat med UIAlertViews.

t. ex:

UIAlertView *alert = initWithTitle:@"Title" message:@"This is an alert view" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

initialiseringsmetoden för UIAlertView har en parameter som heter delegat. Ställa in denna parameter till själv, vilket innebär att det aktuella objektet är ansvarig för att hantera alla händelser avfyras av denna instans av uialertview klass.

om du inte vill hantera händelserna kan du helt enkelt ställa in denna parameter till noll som visas nedan:

UIAlertView *alert = initWithTitle:@"Title" message:@"This is an alert view" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

om du har flera knappar på alert och du vill veta vilken knapp knackade, då kan du genomföra nedanstående metod definieras i uialertviewdelegate protokollet.

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ NSLog(@"You have tapped button # %@",);}

detta var ett exempel på fördefinierad delegat. Men vad händer om vi vill skapa vår egen delegat? Så låt oss lära dig hur du skapar din egen delegat:

Hur skapar du användardefinierad delegat?

kan lära sig att skapa användardefinierade delegat genom att skapa ett enkelt exempel steg för steg. Vi skapar ett exempel för att få förnamn och efternamn från användaren och visa det fullständiga namnet. För att förstå begreppet delegat får vi efternamnet från olika ViewController där vi ställer in delegaten för att skicka efternamnet till den första ViewController.

Steg 1 Skapa projekt & Design UI

först och främst skapa ett nytt Xcode-projekt med namnet DelegateDemo och spara det. Den kommer att innehålla en ViewController.

öppna nu Main_iPhone.storyboard fil och ändra det som visas i nedanstående figur:

delegatedemo

steg 2 Skapa ny klass

skapa en ny klass med namnet LastNameViewController som kommer att vara underklassen i UIViewController-klassen och tilldela den här klassen till den andra ViewController.

steg 3 Segue för öppna ny vy

skapa nu segue från knappen i första ViewController till den andra ViewController.

steg 4 Skapa protokoll i .h file

nu är det dags att skapa din egen delegat. Gå till LastNameViewController.H-fil och ändra den enligt nedan:

#import <UIKit/UIKit.h> @protocol LastNameViewControllerDelegate-(void)setLastName:(NSString *)lastName;@end @interface LastNameViewController : UIViewController @property (nonatomic,retain) id delegate;@property (weak, nonatomic) IBOutlet UITextField *txtLastName;- (IBAction)btnDoneTapped:(id)sender; @end

här, för att skapa din egen delegat, måste du först skapa ett protokoll och förklara nödvändiga metoder utan att det implementeras. För det andra måste du skapa en delegat @property. Även IBOutlet efternamn textfältet som txtLastName och skapa IBAction btnDoneTapped() på Klar knappen i andra ViewController.

Steg 5 Samtalsprotokollmetoder

gå nu till LastNameViewController.m fil och ändra btndonetapped () metod enligt nedan:

- (IBAction)btnDoneTapped:(id)sender{ ; ; ;}

här ställer vi in värdet på efternamn till den delegat vi har skapat i föregående steg. Följ nu nästa steg för att få detta värde I first view controller

dvs ViewController.m-fil

steg 6 Ställ in delegat för skapat protokoll

för att få värdet från LastNameViewController.m-fil för att ViewController.m-fil, först och främst måste vi ställa in delegaten till sig själv i ViewController.m-fil. För att ställa in deleagte till sig själv måste vi lägga till nedanstående metod i ViewController.m file:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ LastNameViewController *lastNameViewController = ; lastNameViewController.delegate = self;}

vi implementerar den här metoden för att ställa in delegaten till sig själv eftersom vi laddar LastNameViewController via segue. Men för detta måste du ändra ViewController.H-fil som visas nedan.

#import "LastNameViewController.h" @interface ViewController : UIViewController

Steg 7 implementera Delegatmetod

för att få värdet av efternamn, implementera delegatmetoden i ViewController.m-fil enligt nedan:

-(void)setLastName:(NSString *)lastName{ NSString *fullName = ; txtFullName.text = fullName;}

om du har några frågor relaterade till iOS-delegater i kommentera dem nedan.

jag hoppas att du tyckte att den här bloggen var till hjälp när du arbetade med iOS-delegater. Låt mig veta om du har några frågor eller funderingar om iOS, lägg en kommentar här och vi kommer att komma tillbaka till dig ASAP. Har du en uppfattning om iPhone – apputveckling? Vad väntar du fortfarande på? Kontakta oss nu och se tanken live snart. Vårt företag har utsetts till en av de bästa iPhone App Development Company i Indien.

Skapad den: 06 juni 2014

jag är IOS-utvecklare. Jag gillar att lära mig ny teknik. Jag tror att någon dåre kan skriva kod som en dator kan förstå men bra programmerare skriver kod som människor kan förstå.

Unity-Brand kula med trail effekt

nästa inlägg
iOS Bildväljare Controller

Lämna ett svar

Din e-postadress kommer inte publiceras.