我正在使用MBProgressHUD来显示带有加载动画的弹出窗口,但我遇到了问题。按下按钮时执行进度指示器调用。这是行动
- (IBAction)calendarioButtonPressed:(UIButton *)sender {
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeIndeterminate;
hud.labelText = @"Uploading";
[hud show:YES];
[self getCalendarioJson];
}
在getCalendarioJson中我有这个
- (void) getCalendarioJson {
//LETTURA CALENDARIO - INIZIO
NSString *calLink = myLink;
NSData* responseData = [NSData dataWithContentsOfURL:[NSURL URLWithString:calLink]];
NSArray* json = [NSJSONSerialization
JSONObjectWithData:responseData //1
options:kNilOptions error:nil];
NSDictionary *firstObject = [json objectAtIndex:0];
NSDictionary *cal = [firstObject objectForKey:@"output"];
variabiliGlobali.calendario = [[NSMutableArray alloc] init];
for (NSDictionary *dict in cal) {
[variabiliGlobali.calendario addObject: dict];
}
//LETTURA CALENDARIO - FINE
}
为什么加载弹出窗口只出现在getCalendarioJson执行结束时? 按钮有一个segue。当我从目标视图返回时,我可以看到弹出窗口。
什么是metter?如果我删除了segue,我可以在getCalendarioJson执行结束时看到弹出窗口(因为没有segue)。
提前致谢。
答案 0 :(得分:0)
你有一个方法[self getCalendarioJson];
但是这个方法在主线程中运行,主线程用于UI更新,当你下载数据或进行几秒持续时间的操作时,主线程等待make UI更新。
要解决这种情况,请将方法放在后台线程中,可以使用[self performSelectorInBackground:@selector(getCalendarioJson) withObject:nil];
答案 1 :(得分:0)
来自https://github.com/jdg/MBProgressHUD
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeAnnularDeterminate;
hud.labelText = @"Loading";
[self doSomethingInBackgroundWithProgressCallback:^(float progress) {
hud.progress = progress; //Here you set the progress
} completionCallback:^{
[hud hide:YES];
}];
您应该设置进度值。