лучшие практики для передачи данных между представлениями в стеке навигационного контроллера - PullRequest
0 голосов
/ 26 марта 2012

У меня есть 3 вида view1, view2 и view 3. У меня проблема с изменением данных в view 2, когда я нахожусь 3. Вот способы, которыми я могу думать о

  1. pullстек контроллера навигации, определите представление с помощью теста iskindof, возьмите переменную и измените ее
  2. view 2 получите значение из appdelegate, а из view 3 я просто обновлю его в appdelegate, и оно будет работать
  3. используйте центр уведомлений и измените данные.

, который является наиболее рекомендуемым способом изменения данных в моем случае.

данные - это просто изменение набора значений в массивеобъектов..

1 Ответ

1 голос
/ 26 марта 2012

Вариант (1) - это подход с наивысшим риском возникновения головной боли, если вы будете проводить рефакторинг дальше по линии.Это может быть слишком рискованно, поэтому есть риск ошибиться, а затем придется тратить больше времени на их исправление.По этим причинам может быть лучше избегать этого.

Выбор между (2) и (3) имеет тенденцию провоцировать идеологические дебаты о глобальных переменных, инкапсуляции и т. Д.

Можно много чего сказатьдля (3), используя UINotificationCenter , даже если вы не придерживаетесь мнения, что глобалы - это зло.Он побуждает вас очень четко подумать о протоколе связи, который вы принимаете, он предотвращает беспорядок в делегате приложения, он имеет тенденцию быть наиболее стабильным для рефакторинга, если вы когда-либо захотите повторно использовать представления в другом месте, где у вас есть преимущество.и т. д.

В частности, с хорошо разработанными уведомлениями вы часто обнаруживаете, что если вы будете проводить рефакторинг дальше, у вас будет гораздо меньше работы - или даже вообще ничего - чтобы ваш код работал правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...