iPhone - передать массив между двумя несмежными контроллерами
-
06-07-2019 - |
Вопрос
Я создаю приложение, которое начинается с загрузки «загрузочного» контроллера представления, который извлекает массив данных через вызов API. Как только данные возвращены, приложение затем скрывает представление этого контроллера представления и загружает контроллер панели вкладок, который содержит два контроллера навигации.
Первое представление, помещенное на первый контроллер навигации, является представлением таблицы. Именно в этом табличном представлении мне нужно отобразить данные, полученные из вызова API, в начальном контроллере представления «загрузка».
Может кто-нибудь объяснить мне, как я передал бы эти данные между контроллерами загрузки и табличного представления? Учитывая, что они не знают друг о друге.
Важным примечанием является то, что данные должны быть извлечены до загрузки контроллера панели вкладок, поэтому невозможно просто извлечь данные из контроллера табличного представления, который будет их использовать. Р>
Решение
Ваши данные подчинены приложению, поэтому делегат приложения может сохранить указатель на данные, а затем два представления могут получить к нему доступ с помощью [[UIApplication sharedApplication] делегат]
.
Другой вариант - отправить сообщение с данными делегату приложения после завершения загрузки. Я предполагаю, что вы уже делаете что-то подобное, так как вы говорите, что приложение скрывает представление контроллера представления, а не скрывает сам контроллер представления. Каким-то образом он должен знать, что загрузка завершена. Итак, в контроллере загрузки:
- (void) downloadFinished {
[listener downloadFinished:data];
}
И в вашем делегате приложения ( слушатель
из предыдущего фрагмента):
- (void) downloadFinished:(NSData *)data {
CustomViewController *c = [[[CustomViewController alloc] initWithData:data] autorelease];
[downloadView removeFromSuperview];
[window addSubview:c.view];
}
Где ваш собственный контроллер представления имеет дело с загрузкой NIB и хранением данных для доступа к таблице.