2012-03-29 3 views
1

Я использовал раскадровку для создания своего приложения, где начальный вид является TabBarController.Экран ViewController для загрузки базы данных перед запуском приложения

Но при первом запуске приложения я загружаю базу данных (4 Мб). Итак, мой экран заставки отображается до тех пор, пока загрузка не закончится, потому что загрузка выполняется в AppDelegate. Я хотел бы изменить его и отобразить представление пользователю, указывающее, что выполняется загрузка, чтобы не создавать впечатление, что приложение разбилось.

Я попробовал это в didFinishLaunchingWithOptions:, но не работает:

LoadViewController *loadView = [[LoadViewController alloc] init]; 
[self.window makeKeyAndVisible]; 
[self.window addSubview:[loadView view]]; 

Спасибо заранее.

+0

Опубликовать сетевой код в приложении AppDelegate. – Sam

ответ

1

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

HUD = [[MBProgressHUD alloc] initWithView:[self view]]; 
[[self view] addSubview:HUD]; 
HUD.dimBackground = YES; 
HUD.delegate = self; 
[HUD showWhileExecuting:@selector(taskToDownloadDatabase) onTarget:self withObject:nil animated:YES]; 

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

+0

Не совсем, но решил мою проблему. Хороший отзыв, спасибо! –

0

Почему бы не загрузить базу данных за пределами appDelegate, а затем поделиться ею с appdelegate? Или, возможно, сделать:

[self [email protected](downloadDatabase) afterDelay:1...]; 

так что сначала загружается представление?

+0

Потому что мне нужна вся база данных перед запутыванием приложения. И пока они все еще загружаются, я хочу указать пользователю, что выполняется загрузка, чтобы не казаться, что приложение разбилось. –

Смежные вопросы