3

我目前有一个非常奇怪的错误。

一个方法被调用,它应该UIActivityIndicatorView通过停止它来隐藏一个(启用停止时自动隐藏)和一个UIImageView被调用的badIndicator.

作为替代,它应该显示另一个UIImageView名为goodIndicator.

[goodIndicator setHidden:NO];
[badIndicator setHidden:YES];
[refreshIndicator stopAnimating];
NSLog(@"statussetting good should be completed");

控制台会立即打印以下内容,但更改在屏幕上发生大约需要三秒钟。

2013-05-31 20:24:57.835 app name[5948:1603] statussetting good should be completed

我尝试setNeedsDisplay在对象和父视图上调用该方法,并将隐藏替换为 alpha。仍然遇到同样的问题。

4

2 回答 2

11

听起来您是从后台线程调用它。所有的交互都UIKit需要从主线程进行。尝试使用:

dispatch_async(dispatch_get_main_queue(), ^{
    [goodIndicator setHidden:NO];
    [badIndicator setHidden:YES];
    [refreshIndicator stopAnimating];
    NSLog(@"statussetting good should be completed");
});
于 2013-05-31T18:55:52.437 回答
2

您需要在主线程中调用此方法。尝试使用:

-(void)hideControls { 
    [goodIndicator setHidden:NO]; 
    [badIndicator setHidden:YES]; 
    [refreshIndicator stopAnimating]; 
    NSLog(@"statussetting good should be completed"); 
}
于 2013-05-31T19:19:30.923 回答