2012-01-02 16 views
16

Mam dwa kontrolery w serii ujęć, osadzone w kontrolerze NavigationController, i istnieje możliwość przełączania między nimi.Przekaż dane z powrotem do poprzedniego kontrolera.

Przekazywanie danych z pierwszego kontrolera do drugiego jest całkiem proste dzięki zaimplementowaniu metody prepareForSegue i ustawieniu właściwości drugiego kontrolera przy użyciu metody segue.destinationViewController.

Powinienem przekazać dane do od drugiego kontrolera do poprzedniego również. Przeszukałem go, ale nie znalazłem żadnego prostego, ale działającego kodu, żeby to pokazać.

Czy byłbyś tak miły dać mi prosty próbkę o najlepszy sposób to zrobić?

Z góry dziękuję!

Odpowiedz

24

W drugiej klasie kontrolera widoku tworzysz protokół i delegujesz. Pierwszy kontroler widoku ustawi się samodzielnie jako delegat w prepareForSegue i zaimplementuje metody protokołu. Drugi kontroler widoku następnie wywoła metody przekazywania danych z powrotem do pierwszego kontrolera widoku. Oto przykład kodu z jednego z moich projektów.

@protocol TableSelectorDelegate <NSObject> 

@optional 
- (void)didMakeSelection:(id)selectionString forType:(NSString *)dataTitle; 
- (void)didAddNewValue:(NSString *)newValue forType:(NSString *)dataTitle; 

@end 

@interface TableSelectorViewController : UITableViewController 

@property (nonatomic, weak) id<TableSelectorDelegate> delegate; 

@end 
+0

W przypadku iOS6 istnieje odprężająca relacja – huggie

2

"Zalecanym sposobem wykonania tej czynności jest użycie osoby upoważnionej. Niech pierwszy kontroler widoku ustawił się jako delegat nowego kontrolera widoku podczas wywołania -prepareForSegue:, a kiedy skończysz, wywołasz wszystkie zdefiniowane metody delegatów.

To trochę więcej pracy niż ścisłe połączenie dwóch kontrolerów, ale w rzeczywistości oszczędza czas, jeśli kiedykolwiek zauważysz, że musisz używać kontrolera w nieco inny sposób. Jeśli obejrzysz wideo WWDC'11 na temat korzystania z IB i Storyboardów, w rzeczywistości przejdą one dogłębnie i będą zawierały przykłady kodu i wersje demonstracyjne, więc polecam przyjrzenie się temu.

3

Po ustawieniu danych przesyłanych do drugiego kontrolera można również ustawić wskaźnik na poprzedni.

0

Byłem studiowania wszystkich wariantów na to pytanie, w jaki sposób przekazać dane z jednego kontrolera widoku do drugiego i przyszedłem zobaczyć, że Apple drugie iOS App Tutorial ma nie tylko kodu, ale piękny wyjaśnienie wszystkiego, co dotyczy.

+0

Gdzie ją znaleźć? – Jeroen

+0

https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011318 –

+0

Powinieneś również przeczytać delegatów, zgodnie z opisem w zaakceptowanej odpowiedzi. –

Powiązane problemy