модальное представление при импорте данных - PullRequest
0 голосов
/ 26 мая 2010

Я начну с исповеди здесь ... Я настоящий новичок в Objective-C и программировании на iPhone (начал учиться в феврале и программировал в марте), у меня есть проект, который очень амбициозен для такого уровня опыта и очень сжатые сроки, чтобы воспользоваться возможностью опробовать мое приложение.

Мое приложение работает на основе Core Data и загружает все его данные при первом запуске, что является выбором, потому что оно будет использоваться на сайтах, где доступ к сети 3G может быть ненадежным. Я хотел бы представить модальное представление, пока это происходит, ничего сложного для объяснения, индикатор выполнения или индикатор активности, графическое изображение и кнопка становятся видимыми, когда работа завершена. Я попробовал несколько подходов и потерпел неудачу, так что никакой код для этого, как и все, кроме XIB, не был уничтожен.

В данный момент я запускаю этот код в приложении DidFinishLaunching ...

[self checkDataAndLoadIfNeeded];
[window addSubview:rootController.view];
[window makeKeyAndVisible];

rootController - это TabBarController с вложенными NavigationController. checkDataAndLoadIfNeeded - это метод, который проверяет значение по умолчанию для загружаемых данных, и если это не так, ДА представляет предупреждение. Метод делегата для отключения оповещения, а затем пользовательский класс DataLoader, который выполняет загрузку и импорт данных.

То, что происходит, заключается в том, что представление rootController становится видимым до срабатывания предупреждения, а таблица на первой вкладке не загружает никаких данных до следующего запуска приложения. Мне интересно, если эти данные не загружаются, потому что я делаю это в viewDidLoad, и лучше ли мне иметь их в viewWillAppear или viewDidAppear. Когда я попытался загрузить модальное представление, я построил, мое представление rootController все еще стало видимым сначала, и мое модальное представление не стало видимым, пока загрузка данных не закончилась (или почти закончилась) (кнопка Готово стала видимой немедленно).

Может кто-нибудь предложить предложения о том, как я могу сделать эту работу?

Cheers & TIA, Pedro:)

1 Ответ

1 голос
/ 26 мая 2010

Похоже, ваш rootController не отслеживает изменения данных. Не должно иметь значения, отображается ли элемент уже или данные загружаются первыми. Если данные загружаются позже, элемент пользовательского интерфейса должен заметить, что данные обновляются, а затем обновиться сам.

В зависимости от дизайна вашего приложения вы должны взглянуть на класс NSFetchedResultsController и реализовать его вместе с методами его делегатов. Этот класс предназначен для отслеживания изменений NSManagedObjectContext и, когда данные сохраняются на диск, обновляет свой делегат с учетом изменений.

...