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 に答える