iPhone - передать массив между двумя несмежными контроллерами - PullRequest
0 голосов
/ 23 июня 2009

Я создаю приложение, которое начинается с загрузки «загрузочного» контроллера представления, который извлекает массив данных через вызов API. Как только данные возвращены, приложение затем скрывает представление этого контроллера представления и загружает контроллер панели вкладок, который содержит два контроллера навигации.

Первое представление, помещенное на первый контроллер навигации, является представлением таблицы. Именно в этом табличном представлении мне нужно отобразить данные, полученные из вызова API, в начальном контроллере представления «загрузка».

Может кто-нибудь объяснить мне, как я передал бы эти данные между контроллерами «загрузки» и представления таблицы? Учитывая, что они не знают друг о друге.

Важным примечанием является то, что данные должны выбираться перед загрузкой контроллера панели вкладок, поэтому невозможно просто извлечь данные из контроллера табличного представления, который будет его использовать.

1 Ответ

1 голос
/ 24 июня 2009

Ваши данные подчинены приложению, поэтому делегат приложения может сохранить указатель на данные, а затем два представления могут получить к нему доступ, используя [[UIApplication sharedApplication] delegate].

Другим вариантом будет отправка сообщения с данными делегату приложения после завершения загрузки. Я предполагаю, что вы уже делаете что-то подобное, так как вы говорите, что приложение скрывает представление контроллера представления, а не скрывает сам контроллер представления. Каким-то образом он должен знать, что загрузка завершена. Итак, в контроллере загрузки:

- (void) downloadFinished {
    [listener downloadFinished:data];
}

А в вашем приложении делегат (listener из предыдущего фрагмента):

- (void) downloadFinished:(NSData *)data {
    CustomViewController *c = [[[CustomViewController alloc] initWithData:data] autorelease];
    [downloadView removeFromSuperview];
    [window addSubview:c.view];
}

Где ваш пользовательский контроллер представления имеет дело с загрузкой NIB и хранением данных для доступа к таблице.

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