0

呼び出し後にいくつかの操作を追加しようとしました

- (void)parserDidStartDocument:(NSXMLParser *)parser {
//NSLog(@"found file and started parsing");
alertView = [[UIAlertView alloc] initWithTitle:@"Caricamento..."
                                       message:@"\n"
                                      delegate:self
                             cancelButtonTitle:nil
                             otherButtonTitles:nil];

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = CGPointMake(139.5, 75.5); // .5 so it doesn't blur
[alertView addSubview:spinner];
[spinner startAnimating];
[alertView show];

}

ただし、アプリがしばらくフリーズし、XML解析が終了すると、AlertViewなどが読み込まれます。UIRefreshControlでも同じです。tableViewを下にスライドすると、解析中にアプリがフリーズし、スピナーが回転しているのがわかりません。

何か案が?

編集:ここで私は初めてパーサーを呼び出します:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

NSString * path = @"thexmlpath.xml";
if(!caricato)
    [NSThread detachNewThreadSelector:@selector(parseXMLFileAtURL:) toTarget:self withObject:path];
    //[self parseXMLFileAtURL:path];

caricato = YES;}

ここでは、RefreshControlを使用するときに呼び出します。

- (void)refreshControlRequest{


NSLog(@"refreshing...");

NSString * path = @"thexmlpath.xml";
[self performSelector:@selector(parseXMLFileAtURL:) withObject:path];}
4

1 に答える 1

1

これがあなたのお役に立てば幸いです

- (void)parserDidStartDocument:(NSXMLParser *)parser {
//NSLog(@"found file and started parsing");
dispatch_queue_t queue = dispatch_get_main_queue();
dispatch_async(queue, ^{
    alertView = [[UIAlertView alloc] initWithTitle:@"Caricamento..."
                                           message:@"\n"
                                          delegate:self
                                 cancelButtonTitle:nil
                                 otherButtonTitles:nil];

    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    spinner.center = CGPointMake(139.5, 75.5); // .5 so it doesn't blur
    [alertView addSubview:spinner];
    [spinner startAnimating];
    [alertView show];
});
dispatch_release(queue);


}
于 2012-12-11T14:45:13.240 に答える