2014-11-10 2 views
0

В моем приложении я подбираю список рецептов для пользователя на выбор. Экран загружает около 10 изображений для отображения, что заставляет приложение занять некоторое время для загрузки, прежде чем отображать все. Экран замерзает средний переключатель в течение примерно 5 секунд, затем отображает рецепты. Мне нужно знать, есть ли способ поставить экран загрузки, чтобы переключатель не был виден. Я искал ее и не получал удовлетворительных результатов, так как большинство результатов касалось экрана загрузки при первом открытии приложения. Любые идеи для меня?Как создать экран загрузки при переключении между экранами в iOS

EDIT

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

+4

Вы должны отправить то, что вы пытались до сих пор и подробности о том, какой экран вы хотите дисплей. Stackoverflow - это скорее сообщество помощи, а не то, что другие делают для вас полное решение. – c0d3Junk13

+0

освободите основную нить, выгрузив материал. см. ответ AJ B –

ответ

1

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

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

How to UIActivityIndicatorView during perform segue?

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

Чтобы SEGUE вид, когда все изображения были загружены: индикатор активности

dispatch_group_t group = dispatch_group_create(); 

dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), 
        ^{ 
         //download your images 
        }); 

dispatch_group_notify(group, dispatch_get_main_queue(), 
         ^{ 
          //images have downloaded, end uiactivityindicator, segue to the next view 

         }); 
+0

хорошо асинхронный, безусловно, путь, но я все еще не могу загрузить страницу до загрузки изображений. он не будет полным – Katushai

+0

Вы можете использовать dispatch_group, чтобы узнать, когда ваша задача async для загрузки изображений завершена. Пример в ответе. –

2

Put на контроллере представления с рецептами:

self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
self.activityIndicator.frame = CGRectMake(40.0, 20.0, 100.0, 100.0); 
self.activityIndicator.center = self.view.center; 

Затем, когда он начнется, запустите его и дд это основной точки зрения:

self.activityIndicator.hidden = NO; 
[self.activityIndicator startAnimating]; 
[self.view addSubview:self.activityIndicator]; 

после загрузки данных, остановить и удалить индикатор активности:

[self.activityIndicator stopAnimating]; 
[self.activityIndicator removeFromSuperview]; 
Смежные вопросы