你好我在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");
}
答案 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;
}