0

我正在开发一个 iPhone 应用程序。它的一个特点是:我按下一个按钮,它就会出现一个 tableView,其中包含从数据库中获取的数据。这工作正常。

问题是,有时,当我点击那个按钮时,应用程序会冻结几秒钟,所以我想添加一个加载指示器或类似的东西,以表明你必须稍等片刻。

好吧,我已经实现了加载指示器,它可以工作,因为我已经在其他视图中检查过它。问题是当我点击按钮时,我添加了子视图,然后我推送了新的 viewController,在它的 viewWillAppear 中调用了 webService。所以应用程序冻结,但不显示任何加载指示器。当我向 Web 服务发送请求时,它在 NSURLConnection 中完全冻结,但是,我不知道为什么,没有添加 subView。如果我不删除子视图,当我从 tableView 回到这个视图时,会显示加载指示器。

所以我不知道如何解决这个问题。

如果你能帮助我,那就太好了。

我附上了我的一些代码

    - (IBAction)menuButtonPressed:(id)sender{

   LoadingIndicator *load = [[LoadingIndicator alloc] init];
[load addLoadingView:self.view];

NSString *boton = [sender currentTitle];

if ([boton isEqualToString:@"Lugares"]){

    CategoriesViewController *catController = [[CategoriesViewController alloc] initWithNibName:@"CategoriesViewController" bundle:nil];

    [self.navigationController pushViewController:catController animated:YES];
    [catController release];

 }   
}

LoadingIndicator,是我用指标制作子视图的类。

4

1 回答 1

2

您将要添加一个线程:

//add your loading view
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // make your web service call here

    dispatch_async( dispatch_get_main_queue(), ^{
        // process results from web service call
        // remove loading view
    });
});
于 2013-06-04T17:06:19.993 回答