iphone: как предварительно загрузить данные в определенное время загрузки приложения, сразу после метода awakeFromNib

в моем (довольно простом) приложении

-> у меня есть одно подпредставление (с именем «Всплеск»), загруженное в основное представление во время запуска, например так (в моем классе mainView):

-(void)awakeFromNib{
 [self addSubview:splash];
}

--> У меня также есть UITableView (с именем «myTable»), загруженный нажатием кнопки (которая вызывает IBAction с именем «LoadData:») в подзаголовке «всплеск». (все представления сделаны в interfaceBuilder, и у каждого представления есть соответствующие классы в проекте xCode)

Что я хочу сделать, так это предварительно загрузить (кешировать) большой объем данных (750 записей) из базы данных SQLite, прежде чем я загружу второй subView («myTable»), который использует эти данные, хранящиеся в массиве.

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

  • если я вызываю метод «RefreshData» в конце метода «awakeFromNib» в классе «mainView», моему приложению требуется ~ 15 секунд, чтобы отобразить первый экран (с именем «заставка»): не хорошо.
  • если я вызываю «RefreshData» в IBAction «LoadData», UITableView появляется на экране примерно через 13 секунд: совсем нехорошо.

Итак, вопрос: есть ли способ вызвать метод «RefreshData» ПОСЛЕ того, как на экране появился первый subView («заставка»), и ДО того, как пользователь нажмет кнопку, которая загружает UITableView?

Любая помощь будет оценена по достоинству, и, пожалуйста, приносим свои извинения за мой плохой английский!


person Chrysotribax    schedule 23.11.2009    source источник


Ответы (1)


Попробуйте вызвать refreshData чуть позже, т.е. в

-(void) viewDidAppear:

Кроме того, если запрос SQL блокирует графический интерфейс, вам, возможно, следует подумать о извлечении данных в новом потоке (хотя я думал, что SQL сделал это)

person Chris    schedule 23.11.2009
comment
кхм... Хорошо, но куда мне поместить этот метод? На самом деле, у меня не было viewController в моем приложении. Итак, я попытался добавить один, подключить его к подвиду Splash и добавить в реализацию класса Splash: -(void)viewDidAppear:(BOOL)animated{ NSLog(@something); [обновить данные основного представления]; } ничего не происходит... :-( что не так ? - person Chrysotribax; 23.11.2009
comment
Он вообще не вызывается? и я думаю, что это должно быть [self refreshData], если этот метод находится в VC. - person Chris; 23.11.2009
comment
Нет, ничего не происходит, даже при вызове NSLog. Попробую выложить в ВК refreshData. - person Chrysotribax; 23.11.2009