2011-09-05 44 views
0
- (void) didClickDone{ 
    if (isValide ==0) { 
     (...) 
     [newFormDataRequest setDelegate:self]; 
     [newFormDataRequest startAsynchronous]; 
     (...) 
     //show the label 
     [self showWithLabel]; 
    } 
} 




# pragma mark - AsiHTTPRequest delegate methods 
- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    NSLog(@"PostAdRequest = %@", [request responseString]); 
    HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]] autorelease]; 
    HUD.mode = MBProgressHUDModeCustomView; 
    HUD.labelText = @"Completed"; 
    sleep(10); 
    [self hudWasHidden]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

我想从AsiHTTPRequest获得积极答案后更改MBPrograssHub。但观点依然如此。你知道为什么吗 ?MBProgressHUB混合查看

感谢

回答

2

因为sleep(10)是不允许UIThread更新HUD。

- (void)requestFinished:(ASIHTTPRequest *)request { 
    NSLog(@"PostAdRequest = %@", [request responseString]); 
    HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]] autorelease]; 
    HUD.mode = MBProgressHUDModeCustomView; 
    HUD.labelText = @"Completed"; 

    [self performSelector:@selector(removeHUD) withObject:nil afterDelay:10.0f]; 
} 

- (void) removeHUD { 
    [self hudWasHidden]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

哎呀!真棒!非常感谢你 –

+0

我甚至不知道你为什么在这里使用sleep():你永远不应该暂停主线程,并且在大多数操作的辅助线程上使用它并不是所有的原因 - Objective如果你确实需要它,-C就拥有'sleep()'的包装器。 – lxt

+0

他可能希望该对话框可见,以便告诉用户它已完成请求。 – rckoenes