самый элегантный способ передачи данных в rootViewController - PullRequest
0 голосов
/ 02 мая 2011

Мне нужно передать данные из третьего viewController в rootViewController в navigationController.

Я думаю сделать так:

A = rootViewController и B = lastViewController В B я вставляю такой метод:

-(void)load:(A father)f
{
   self.father = f;  // where father is a retain property
}

затем, когда я выделю B в A, перед нажатием я вызову метод загрузки.

Будет ли это работать?

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

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 02 мая 2011
  1. Длинный и более подходящий способ: протокол и делегирование

    • ваш rootViewController B должен будет реализовать протокол, тогда в вашем lastViewController вы должны будете объявитьделегат этого протокола, затем вызовите что-то вроде lastViewController.myDelegate = myParent;

    • это полезно, если вы хотите модульные компоненты, но на основе опыта некоторые классы очень специфичны дляФункция и создание протокола просто продлевает процесс выполнения этой базовой необходимости передачи данных.В этом случае я предлагаю вам использовать # 2.

  2. Короткий путь: что вы сказали

    • ... но я предпочитаюпередать родительский класс на инициализацию.Т.е. initWithParent: [myParent], но это только я.Также НЕ сохраняйте родителя от дочерних классов.Только родительский класс может сохранить своего потомка, иначе у вас будет проблема с управлением памятью.Недостатком этого подхода является то, что если ваши контроллеры усложняются, будет очень трудно отделить их логику позже, на случай, если вам понадобится их разделить, например, повторно использовать один компонент в другом проекте.
0 голосов
/ 02 мая 2011

Некоторые говорят, что синглтоны - это зло, но я думаю, что они служат цели - но в вашем случае я бы пошел с делегированием.Это IMO лучший способ обработки данных между контроллерами и моделями.

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