Создание собственного экрана загрузки на iPhone - PullRequest
0 голосов
/ 22 октября 2010

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

StartWindow *start = [[StartWindow alloc] initWithNibName:@"Start" bundle:nil];

self.startWindow = start;

[start release];

[window addSubview:startWindow.view];

И в viewDidLoad событии внутри StartWindow на данный момент у меня просто есть [NSThread sleepForTimeInterval:3.0]; для имитации моей загрузки.

Проблема в , что мое представление не отображается, пока после поток не перестал спать. почему?

Редактировать

Приведенный выше код находится внутри didFinishLaunchingWithOptions.

Ответы [ 2 ]

1 голос
/ 22 октября 2010

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

Кстати, sleepForTimInterval на самом деле не работает в отдельном потоке. Это заставляет вызывающий поток спать (в данном случае основной поток пользовательского интерфейса).

1 голос
/ 22 октября 2010

Проблема в том, что вы блокируете основной поток, и, следовательно, ОС не может обновить окно и отобразить ваш новый вид.Вы можете попытаться выполнить загрузку во втором потоке, или, если вам нужно вызвать множество не поточно-безопасных функций, вы можете начать загрузку через короткий промежуток времени через NSTimer, чтобы у ОС было время обновить окно..

Другой способ - выполнить загрузку в viewDidAppear:, которая вызывается при отображении представления, тогда как viewDidLoad вызывается при загрузке представления из файла пера.

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