ActivityIndi​​cator没有显示

时间:2014-01-03 16:20:08

标签: ios activity-indicator

我正在实施似乎是iOS活动指标的标准代码,但它没有显示。这是我的工作,遵循来自这里的建议:

viewDidLoad

indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
indicator.frame = CGRectMake(0, 0, 80.0, 80.0);
indicator.hidden = NO;
indicator.center = self.view.center;
[self.view insertSubview:indicator atIndex:100]; // to be on the safe side
[indicator bringSubviewToFront:self.view];
[UIApplication sharedApplication].networkActivityIndicatorVisible = TRUE;

然后在viewWillAppear中,在调用我的长处理方法之前:

[NSThread detachNewThreadSelector:@selector(threadStartAnimating:) toTarget:self withObject:nil];

我的主题启动动画:

-(void)threadStartAnimating:(id)data
{
    [indicator startAnimating];
}

然后我有一个Parse.com方法在后台做了一些工作:

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {       
    if(!error) {
        // do some work
        [indicator stopAnimating];
    }
}

我能看到的一切,这应该有效。但事实并非如此。我错过了什么?

2 个答案:

答案 0 :(得分:1)

每当你想操纵你的视图(即addSubview等)时,最好在viewWillAppear中这样做。 viewDidLoad操作视图还为时过早,因为其他方法仍会改变它(即setFrame)。

所以将当前代码从viewDidLoad移动到viewWillAppear应该可以解决问题!

答案 1 :(得分:0)

startAnimating应该在主线程上调用,而不是在新线程中调用。 因此,只需在[indicator startAnimating];中致电viewWillAppear即可。