在模态视图中显示警报

时间:2011-03-08 11:22:48

标签: iphone alert modalviewcontroller

我有一个显示模态视图的应用程序。在最后一个模态视图中,我有一个表单。单击完成按钮后,将调用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];
}

2 个答案:

答案 0 :(得分:0)

您必须为Web服务响应编写侦听器或通知。如果您正在使用NSUrlConnection,请使用其委托来获取响应并从委托方法中解除模态视图。在您使用的方法中,视图在调用webservice

后立即被忽略

答案 1 :(得分:0)

我明白了。模态视图不是问题。警报被阻止,因为主线程正在执行Web服务。 Web服务执行需要在后台运行。这是与答案相似的问题的链接。

Showing alert while calling webservice