У меня возникла небольшая проблема с iPhone-приложением, которое я сейчас разрабатываю. Когда пользователь прикасается к кнопке, он вызывает IBAction с именем refreshQuestion, который должен показывать изображение, наводимое на экран, чтобы попросить пользователя подождать минуту, затем он должен вызвать другую функцию и, наконец, он должен скрыть изображение ,Как показать/скрыть UIImageView, когда я хочу
Проблема в том, что изображение не появится. А также индикатор сетевой активности.
Любая помощь?
Вот код:
- (IBAction)refreshQuestion:(id)sender{
pleaseWait.hidden = NO;
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[self loadData];
pleaseWait.hidden = YES;
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
EDIT: Вот моя LoadData функция:
- (void)loadData{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString * idUtilisateur = [userDefaults objectForKey:@"idUtilisateur"];
NSString * stringUrlQuestion = [NSString stringWithFormat:@"http://www.mywebsiteURL"];
NSURL * urlQuestion = [NSURL URLWithString:stringUrlQuestion];
QuestionParser * parser = [[QuestionParser alloc] init];
[parser parseXMLAtURL:urlQuestion parseError:nil] ;
int nbQuestions = [parser.arrayOfQuestion count];
[parser release];
NSFetchRequest *requete = [[NSFetchRequest alloc] init];
NSEntityDescription *entite = [NSEntityDescription entityForName:@"Question" inManagedObjectContext:self.managedObjectContext];
[requete setEntity:entite];
NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"idQuestion" ascending:YES];
NSArray * sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[requete setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];
NSError * error;
NSMutableArray *mutableFetchResult = [[self.managedObjectContext executeFetchRequest:requete error:&error] mutableCopy];
[requete release];
if(mutableFetchResult == nil){
NSLog(@"Erreur viewWillAppear : %@", error);
}
questionDuJour = [mutableFetchResult objectAtIndex:0];
if (nbQuestions == 0){
UIAlertView* alertViewConnection = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Error while retreiving data" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertViewConnection show];
[alertViewConnection release];
}
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"EEEE d MMMM"];
NSLocale * localisation = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];
[outputFormatter setLocale:localisation];
labelJour.text = [NSString stringWithFormat:@"%@",[outputFormatter stringFromDate:questionDuJour.dateQuestion]];
textQuestion.text = questionDuJour.textQuestion;
citation.text = [NSString stringWithFormat:@"%@",questionDuJour.citation];
labelAuteur.text = [NSString stringWithFormat:@"%@",questionDuJour.auteur];
[outputFormatter release];
NSLog(@"stop animating");
}
Я попробовал, и действительно, появляется мое изображение. Но он появляется ПОСЛЕ завершения функции loadData. И эта функция может занять несколько секунд. Похоже, что он ждет завершения моей функции loadData, прежде чем что-либо сделать на моем представлении. Есть ли способ заставить мое свойство .hidden «выполнить»? Как фиксация или что-то еще? – Madness64
Используйте NSThread, тогда – KingofBliss
Хорошо, но что я должен выполнить в потоке? Моя функция LoadData? – Madness64