delegaci na iOS Tutorial

otrzymasz ostateczne wyjście:

demo delegata

czym jest delegat?

Delegat jest po prostu środkiem komunikacji między obiektami aplikacji iOS. Delegacja może być prostym sposobem łączenia obiektów i komunikowania się ze sobą. Innymi słowy możemy powiedzieć, że delegat pozwala jednemu obiektowi wysyłać wiadomość do innego obiektu, gdy wystąpi jakiekolwiek zdarzenie. Pozwala to zrozumieć na prawdziwym przykładzie życia. Załóżmy, że jest jakieś Biuro z 5 licznikami. Wchodzisz do biura i przechodzisz do licznika 1 i podajesz kilka szczegółów na tym liczniku.

teraz Twoje dane muszą przejść przez jakiś proces, który Counter 3 wie, ale counter 1 nie. więc counter 1 powie Ci, abyś poczekał trochę czasu i przekazał swoje dane do counter 3, aby zakończyć proces. W tym przypadku licznik 3 Jest delegatem, który obsługuje Twoje Wydarzenia, który jest kierowany przez licznik 1. Gdy licznik 3 zakończy przetwarzanie Twoich danych, odeśle wiadomość do licznika 1 informującą, że proces został zakończony i możesz teraz kontynuować.

przykład:

być może pracowałeś z UIAlertViews.

np.:

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

metoda initializer UIAlertView ma parametr o nazwie delegat. Ustawienie tego parametru na self, co oznacza, że bieżący obiekt jest odpowiedzialny za obsługę wszystkich zdarzeń wywołanych przez tę instancję klasy UIAlertView.

jeśli nie chcesz obsługiwać zdarzeń, możesz po prostu ustawić ten parametr na nil, jak pokazano poniżej:

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

jeśli masz wiele przycisków na alercie i chcesz wiedzieć, który przycisk jest naciśnięty, możesz zaimplementować poniższą metodę zdefiniowaną w protokole UIAlertViewDelegate.

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

to był przykład predefiniowanego delegata. Ale co, jeśli chcemy stworzyć własnego delegata? Więc dowiedzmy się, jak utworzyć własnego delegata:

Jak utworzyć delegata zdefiniowanego przez użytkownika?

pozwala dowiedzieć się, jak utworzyć delegata zdefiniowanego przez użytkownika, tworząc prosty przykład krok po kroku. Stworzymy przykład, aby uzyskać imię i nazwisko od użytkownika i wyświetlić pełną nazwę. Aby zrozumieć koncepcję delegata, otrzymamy nazwisko z innego kontrolera ViewController, gdzie ustawimy delegata, aby przekazywał nazwisko do pierwszego kontrolera ViewController.

Krok 1 Utwórz projekt & Design UI

przede wszystkim utwórz nowy projekt Xcode o nazwie DelegateDemo i zapisz go. Będzie on zawierał jeden kontroler ViewController.

teraz otwórz Main_iPhone.plik storyboard i zmodyfikuj go, jak pokazano na poniższym rysunku:

delegatedemo

Krok 2 Utwórz nową klasę

Utwórz nową klasę o nazwie LastNameViewController, która będzie podklasą klasy UIViewController i przypisz tę klasę do drugiego kontrolera ViewController.

Krok 3 Segue dla otwarcia nowego widoku

teraz Utwórz segue od przycisku w pierwszym kontrolerze ViewController do drugiego kontrolera ViewController.

Krok 4 Utwórz protokół w .plik h

teraz nadszedł czas, aby utworzyć własnego delegata. Przejdź do LastNameViewController.plik h i zmodyfikuj go jak poniżej:

#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

tutaj, aby utworzyć własnego delegata, przede wszystkim musisz utworzyć protokół i zadeklarować niezbędne metody bez jego implementacji. Po drugie musisz utworzyć właściwość delegate @. Również IBOutlet pole tekstowe nazwisko jako txtLastName i utwórz IBAction btnDoneTapped () na przycisku done w drugim kontrolerze ViewController.

Krok 5 wywołanie metod protokołu

teraz przejdź do LastNameViewController.m plik i zmodyfikuj metodę btndonetapped () jak poniżej:

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

tutaj ustawiamy wartość last name na delegata, który stworzyliśmy w poprzednim kroku. Następnie wykonaj następny krok, aby uzyskać tę wartość w pierwszym kontrolerze widoku

, czyli ViewController.m plik

Krok 6 Ustaw delegata utworzonego protokołu

, aby uzyskać wartość z LastNameViewController.m plik do ViewController.m pliku, przede wszystkim musimy ustawić delegata na siebie w ViewController.plik M. Aby ustawić deleagte dla siebie, musimy dodać poniższą metodę w ViewController.plik m:

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

zaimplementujemy tę metodę, aby ustawić delegata na siebie, ponieważ ładujemy LastNameViewController przez segue. Ale w tym celu musisz zmodyfikować ViewController.plik h, jak pokazano poniżej.

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

Krok 7 zaimplementuj metodę Delegate

aby uzyskać wartość last name, zaimplementuj metodę delegate w ViewController.m plik jak poniżej:

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

jeśli masz jakiekolwiek pytania związane z delegatami iOS w komentarzu poniżej.

mam nadzieję, że ten blog okazał się pomocny podczas pracy na iOS. Daj mi znać, jeśli masz jakieś pytania lub wątpliwości dotyczące iOS, proszę umieścić komentarz tutaj, a my skontaktujemy się z tobą jak najszybciej. Masz pomysł na rozwój aplikacji na iPhone ’ a? Na co jeszcze czekasz? Skontaktuj się z nami teraz i zobacz pomysł na żywo wkrótce. Nasza firma została uznana za jedną z najlepszych firm zajmujących się rozwojem aplikacji na iPhone ’ a w Indiach.

Utworzono: 06 June 2014

jestem programistą iOS. Lubię uczyć się nowych technologii. Wierzę, że każdy głupiec może napisać kod, który komputer może zrozumieć, ale dobrzy Programiści piszą kod, który ludzie mogą zrozumieć.

PREVIOUS POST
Unity-Fire bullet with trail effect

następny wpis
iOS image Picker Controller

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.