我有一个显示模态视图的应用程序。在最后一个模态视图中,我有一个表单。单击完成按钮后,将调用Web服务,该服务传递用户输入的值。收到回复后,模态视图将被取消。我想显示一个警报或操作表,要求用户等待,因为Web服务调用需要花费很多时间。问题是警报或操作表仅在视图被关闭后才会显示。为什么会这样?以下是done函数的代码:
-(void)reg:(id)sender {
if([password length] == 0) {
//show alert
}
//other validation
//This is were I write the alert
UIActivityIndicator *activity = [[UIActivityIndicator alloc] initWithActivityIndicatorStyle:
UIActivityIndicatorStyleWhite];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Processing" delegate:self otherButtonTitles:nil];
[alert addSubview:activity];
[activity startAnimating];
[alert show];
WebServiceController *web = [[WebServiceController alloc]init];
//webservice called
//getting the response
//dismissing alert here
[self dismissModalViewControllerAnimated:YES];
}
答案 0 :(得分:0)
您必须为Web服务响应编写侦听器或通知。如果您正在使用NSUrlConnection,请使用其委托来获取响应并从委托方法中解除模态视图。在您使用的方法中,视图在调用webservice
后立即被忽略答案 1 :(得分:0)
我明白了。模态视图不是问题。警报被阻止,因为主线程正在执行Web服务。 Web服务执行需要在后台运行。这是与答案相似的问题的链接。