2012-10-06 12 views
5

Istnieje wiele przykładów przekazywania danych między dwoma kontrolerami widoku, w których jeden kontroler widoku przechodzi do innego kontrolera widoku.przekazywanie danych za pomocą delegatów między kontrolerami view bez kontrolera nawigacyjnego

Ale czy można przekazać dane za pomocą protokołów niestandardowych & delegatów między kontrolerami widoku, które nie są połączone przez kontroler nawigacyjny?

Oto przykład: Kontrolery trzech widoków to: A, B, C. A przechodzi do B, a B przechodzi na C. Wiem, jak przekazywać dane między A & B przy użyciu niestandardowych protokołów & delegatów. Ale czy możemy przekazać dane między C & A. Zatem A może być delegatem C, dzięki czemu może odbierać dane z C. czy to możliwe?

Każda pomoc zostanie doceniona.

Odpowiedz

8

Jednym ze sposobów jest używać delegatów wstecznej przekazywanie danych

simple-delegate-tutorial-for-ios Patrz odnośnik do przekazywania danych z C do kontrolera.

Sprawdź link basic-delegate-example.

Innym sposobem jest przesłanie powiadomienia przez . do przekazywania danych w tył

Sprawdź link Comunicate-Two-Views.

+0

Dzięki za szybką odpowiedź. Ale w pierwszym przykładzie dwa kontrolery widoku są połączone za pomocą widoku modalnego. To samo dotyczy drugiego przykładu. – footyapps27

+0

Takich powiadomień można używać, ale chciałem wiedzieć, czy można to osiągnąć za pomocą niestandardowych protokołów i delegatów. – footyapps27

+0

Drugi przykład nie działa, ponieważ nie dziedziczy on niestandardowego protokołu. Hej, wiem, jak przekazywać dane za pomocą delegatów między dwoma kontrolerami widoku, które są połączone za pomocą kontrolera nawigacyjnego. – footyapps27

1

Możesz użyć pojedynczej klasy i implementować w niej protokół delegowania. Będziesz miał możliwość przekazywania danych między dowolnymi kontrolerami widoku.

+0

mógłbyś to trochę wyjaśnić. – footyapps27

+0

OK. Singleton to deseń desisn, który ma tylko jedną instancję i zawsze można go wywołać z dowolnego miejsca w kodzie.Tak więc w twoim schemacie kontrolery widoku A, B i C wyglądają na jeszcze jedną klasę D, która może mieć dostęp do dowolnego kontrolera, nawet bez połączenia z nawigacjąController –

+0

To są przykłady singletonów NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; NSNotificationCenter * notificationCenter = [NSNotificationCenter defaultCenter]; UIApplication * myApplication = [UIApplication sharedApplication]; –

Powiązane problemy