NSNotificationCenter无法将活动指示器设置为隐藏

时间:2012-06-12 13:52:38

标签: ios iphone xcode uiactivityindicatorview

你好我在appdelegate中创建了一个nsnotificationcenter。当下载完成后,它会发送一个通知。我的班级有一个活动指示器,我在下载完成时隐藏了什么,但它不起作用。我可以看到我的nslog,但它并没有隐藏acitivyindicator。

这是我的代码:

viewDidLoad中:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshView:) name:@"loadingFinished" object:nil];

我的职能:

-(void)refreshView:(NSNotification*)notification
{

    activity.hidden = YES;
    self.view.userInteractionEnabled =YES;
    NSLog(@"alles geladen zeiger wird geladen");



}

2 个答案:

答案 0 :(得分:4)

如果你在任何其他线程,那么它将无法工作cz UI无法在内部线程中工作。使用这个

-(void)refreshView:(NSNotification*)notification
{


dispatch_async(dispatch_get_main_queue(), ^{
 activity.hidden = YES;
    self.view.userInteractionEnabled =YES;

        });    
    NSLog(@"alles geladen zeiger wird geladen");



}

答案 1 :(得分:0)

可能无法在主线程上调用通知回调,但必须在主线程中完成所有UI更新。因此,在您的通知回调中,使用[self performSelectorOnMainThread:@selector(refreshViewFromMainThread)],并声明一种新方法:

- (void)refreshViewFromMainThread
{
    activity.hidden = YES;
    self.view.userInteractionEnabled = YES;
}