Как сделать небольшой прозрачный модальный общий для обозначения загрузки данных? - PullRequest
0 голосов
/ 29 сентября 2011

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

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

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

Редактировать: я добавил некоторый асинхронный код ниже

Сначала я вызываю эту функцию:

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSURLConnection *c = [[NSURLConnection alloc] init];
[self connectionWorks:c didReceiveData:data];

connectionworks

-(void)connectionWorks:(NSURLConnection *)connection didReceiveData:(NSData *)data{
  OLWork *newWork;

  NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

  NSDictionary *results = [jsonString JSONValue];

  NSArray *rawBooks = [results objectForKey:@"works"];

  for (NSDictionary *work in rawBooks) {

    newWork = [[OLWork alloc] init];
    newWork.title = [work objectForKey:@"title"];
    newWork.author = [[[work objectForKey:@"authors"] objectAtIndex:0] objectForKey:@"name"];
    newWork.key = [work objectForKey:@"key"];

    [self.works setValue:newWork forKey:newWork.title];

  }
}

1 Ответ

1 голос
/ 29 сентября 2011

Это сделает работу за вас, она хорошо документирована и проста в использовании

https://github.com/jdg/MBProgressHUD

Из интереса, какой анализатор JSON вы используете?Работать с асинхронными запросами было бы гораздо лучшим решением.

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