2

您好,我在 appdelegate 中创建了一个 nsnotificationcenter。下载完成后它会发送通知。我的课堂上有一个活动指示器,下载完成后我要隐藏它,但它不起作用。我可以看到我的 nslog,但它不会隐藏活动指示符。

这是我的代码:

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");



}
4

2 回答 2

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");



}
于 2012-06-12T13:56:24.940 回答
0

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

- (void)refreshViewFromMainThread
{
    activity.hidden = YES;
    self.view.userInteractionEnabled = YES;
}
于 2012-06-12T13:55:04.323 回答