我正在开发的iPhone应用程序有点问题。 当用户触摸按钮时,它会调用一个名为refreshQuestion的IBAction,它应该显示一个图像悬停在屏幕上以要求用户稍等片刻,然后它必须调用另一个函数,最后它必须隐藏图像。
问题是图像不会出现。以及网络活动指标。
任何帮助?
以下是代码:
- (IBAction)refreshQuestion:(id)sender{
pleaseWait.hidden = NO;
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[self loadData];
pleaseWait.hidden = YES;
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
编辑: 这是我的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");
}
答案 0 :(得分:0)
我认为您的代码[self loadData]
会在几微秒内执行。
单独使用此代码进行检查,
pleaseWait.hidden = NO;
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
修改强>
检查一下,如果仍然遇到同样的问题,请检查是否已分配IBoutlet。因为你正在做的是正确的方法。
答案 1 :(得分:0)
听起来一切都在UI线程上执行。发布你的loadData方法,这样我们就可以看到它在做什么。您可能需要将此方法转换为使用将立即返回并允许UI线程继续的异步技术之一。然后,您可以检测何时完成加载数据并再次更改图像的可见性。