2014-04-01 23 views
0

这就是我的情况。在等待下一页出现时关闭活动指示器

我正在从一页到另一页,第二个视图需要很长时间才能加载。我想发布一个活动指标。我尝试了各种组合,但无法让事情正常工作。我的猜测是Segue和活动指示符都在主线程中,所以活动指示符没有时间更新,因为线程阻塞了。

当用户点击它触发关闭活动按钮操作的链接:

我目前的实现是在这里 - 我敢肯定有一个简单的办法。

- (IBAction)activityButton:(id)sender { 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [[self activityIndicator] startAnimating]; 
    }); 
    [self performSelector:@selector(segueToPastFlights) withObject:self]; 

} 

-(void)segueToPastFlights { 
    [self performSegueWithIdentifier:@"PastFlightSegue" sender:self]; 
} 

如果我实际上并没有指示灯开始旋转罚款SEGUE ...

回答

0

AHHA!

此修复程序是真正做SEGUE背景:

[self performSelector:@selector(segueToPastFlights) withObject:self]; 

成为

[self performSelectorInBackground:@selector(segueToPastFlights) withObject:self]; 

而且所有作品希望!

+0

什么需要时间来加载?你不应该在后台线程上触发UI更改... – Wain

+0

ViewDidLoad在我的下一个segue中,如果处理一堆数据以显示在屏幕上(显然) – Jeef

+0

那么,控制器应该显示活动指示器和数据加载应该在后台完成并在完成时更新UI ... – Wain