iOS Delegates Tutorial

Sie erhalten die endgültige Ausgabe:

 delegieren Demo

Was ist delegieren?

Delegate ist einfach nur ein Kommunikationsmittel zwischen Objekten von iOS-Anwendungen. Sie können es als eine einfache Möglichkeit betrachten, Objekte zu verbinden und miteinander zu kommunizieren. Mit anderen Worten, wir können sagen, dass Delegate einem Objekt erlaubt, eine Nachricht an ein anderes Objekt zu senden, wenn ein Ereignis eintritt. Lassen Sie uns dies anhand eines realen Beispiels verstehen. Angenommen, es gibt ein Büro mit 5 Zählern. Sie betreten das Büro und gehen zum Schalter 1 und senden einige Details zu diesem Schalter.

Jetzt müssen Ihre Daten einen Prozess durchlaufen, den Zähler 3 kennt, Zähler 1 jedoch nicht. Zähler 1 fordert Sie daher auf, einige Zeit zu warten und Ihre Daten an Zähler 3 weiterzuleiten, um den Vorgang abzuschließen. In diesem Fall ist Zähler 3 der Delegat, der Ihre Ereignisse behandelt, auf den Zähler 1 verweist. Nachdem Zähler 3 die Verarbeitung Ihrer Daten abgeschlossen hat, sendet er die Nachricht an Zähler 1 zurück, dass der Vorgang abgeschlossen ist und Sie jetzt fortfahren können.

Beispiel:

Möglicherweise haben Sie mit UIAlertViews gearbeitet.

Z.B:

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

Die Initialisierungsmethode von UIAlertView hat einen Parameter namens delegate . Setzen Sie diesen Parameter auf self , was bedeutet, dass das aktuelle Objekt für die Behandlung aller Ereignisse verantwortlich ist, die von dieser Instanz der UIAlertView-Klasse ausgelöst werden.

Wenn Sie die Ereignisse nicht behandeln möchten, können Sie diesen Parameter einfach wie unten gezeigt auf nil setzen:

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

Wenn mehrere Schaltflächen in Alarmbereitschaft sind und Sie wissen möchten, auf welche Schaltfläche getippt wird, können Sie die folgende Methode implementieren, die im UIAlertViewDelegate-Protokoll definiert ist.

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

Dies war ein Beispiel für einen vordefinierten Delegaten. Aber was ist, wenn wir unseren eigenen Delegierten erstellen möchten? Lernen wir also, wie Sie Ihren eigenen Delegaten erstellen:

Wie erstelle ich einen benutzerdefinierten Delegaten?

Hier erfahren Sie, wie Sie benutzerdefinierte Delegaten erstellen, indem Sie Schritt für Schritt ein einfaches Beispiel erstellen. Wir erstellen ein Beispiel, um den Vor- und Nachnamen des Benutzers abzurufen und den vollständigen Namen anzuzeigen. Um das Konzept des Delegaten zu verstehen, erhalten wir den Nachnamen von einem anderen ViewController, in dem wir den Delegaten so einstellen, dass er den Nachnamen an den ersten ViewController übergibt.

Schritt 1 Projekt erstellen & Design UI

Erstellen Sie zunächst ein neues Xcode-Projekt mit dem Namen DelegateDemo und speichern Sie es. Es wird einen ViewController enthalten.

Öffnen Sie nun das Main_iPhone.storyboard-Datei und ändern Sie sie wie in der folgenden Abbildung gezeigt:

delegatedemo

Schritt 2 Neue Klasse erstellen

Erstellen Sie eine neue Klasse mit dem Namen LastNameViewController, die die Unterklasse der UIViewController-Klasse ist, und weisen Sie diese Klasse dem zweiten ViewController zu.

Schritt 3 Übergang für neue Ansicht öffnen

Erstellen Sie nun einen Übergang von der Schaltfläche im ersten ViewController zum zweiten ViewController.

Schritt 4 Protokoll erstellen in .h file

Jetzt ist es an der Zeit, Ihren eigenen Delegaten zu erstellen. Gehen Sie zum LastNameViewController.h-Datei und ändern Sie sie wie folgt:

#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

Um hier einen eigenen Delegaten zu erstellen, müssen Sie zunächst ein Protokoll erstellen und die erforderlichen Methoden ohne deren Implementierung deklarieren. Zweitens müssen Sie einen Delegaten @property erstellen. IBOutlet Sie auch das Textfeld Nachname als txtLastName und erstellen Sie IBAction btnDoneTapped() auf der Schaltfläche Fertig im zweiten ViewController.

Schritt 5 Protokollmethoden aufrufen

Gehen Sie nun zu LastNameViewController.m Datei und ändern btnDoneTapped () Methode wie folgt:

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

Hier setzen wir den Wert von last name auf den Delegaten, den wir im vorherigen Schritt erstellt haben. Folgen Sie nun dem nächsten Schritt, um diesen Wert im ersten View controller

dh ViewController .m Datei

Schritt 6 Setzen Sie den Delegaten des erstellten Protokolls

, um den Wert von LastNameViewController abzurufen.m Datei zum ViewController.m Datei, zuerst müssen wir den Delegaten in ViewController auf sich selbst setzen.m-Datei. Um die deleagte auf sich selbst zu setzen, müssen wir die folgende Methode in ViewController hinzufügen.m Datei:

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

Wir implementieren diese Methode, um den Delegaten auf sich selbst zu setzen, da wir den LastNameViewController über segue laden. Dafür müssen Sie jedoch den ViewController ändern.h-Datei wie unten gezeigt.

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

Schritt 7 Implementieren der Delegatmethode

Implementieren Sie die Delegatmethode in ViewController, um den Wert von last name abzurufen.m-Datei als unten:

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

Wenn Sie Fragen zu iOS-Delegierten haben, kommentieren Sie diese unten.

Ich hoffe, Sie fanden diesen Blog hilfreich bei der Arbeit an iOS-Geräten. Lassen Sie mich wissen, wenn Sie Fragen oder Bedenken zu iOS haben, geben Sie bitte hier einen Kommentar ab und wir werden uns so schnell wie möglich bei Ihnen melden. Haben Sie eine Idee von iPhone App-Entwicklung? Worauf warten Sie noch? Kontaktieren Sie uns jetzt und sehen Sie die Idee bald live. Unser Unternehmen wurde als eines der besten iPhone-App-Entwicklungsunternehmen in Indien ausgezeichnet.

Erstellt am : 06 Juni 2014

Ich bin iOS-Entwickler. Ich lerne gerne neue Technologien. Ich glaube, dass jeder Narr Code schreiben kann, den ein Computer verstehen kann, aber gute Programmierer schreiben Code, den Menschen verstehen können.

VORHERIGER BEITRAG
Unity – Feuerkugel mit Trail-Effekt

NÄCHSTER BEITRAG
iOS Image Picker Controller

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.