2

我在按钮单击或(IBAction)中使用以下内容

- (IBAction)HistoryBtn:(id)sender {
   self startReport];
   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //============================   
          so some long processing code         
        //============================            
        [self stopReport];
   });
}

在哪里

-(void) startReport
{
    alert = [[UIAlertView alloc] initWithTitle:@"Generating PDF" message:@" " delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
    UIActivityIndicatorView *progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 50, 30, 30)];
    progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    [alert addSubview:progress];
    [alert setDelegate:self];
    [progress startAnimating];

    [alert show];
}

-(void) stopReport
{
    NSLog(@"  Stop Called  ");
    [self.alert dismissWithClickedButtonIndex:0 animated:NO];
    self.alert = nil;

    NSLog(@"  Stop Called  ");
}

问题是 AlertView 弹出窗口,我可以看到按钮工作,然后调用 StopReport 但 AlertView 停留在那里 我怎样才能让 AlertView 消失

提前致谢

4

1 回答 1

3

您必须仅在主线程上使用 UI。

 - (IBAction)HistoryBtn:(id)sender {
   self startReport];
   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //============================   
          so some long processing code         
        //============================      
        dispatch_async(dispatch_get_main_queue(), ^{
            [self stopReport];
        });
   });
}
于 2012-07-14T17:53:44.107 回答