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

他のスレッドを使用している場合、それは機能しません。czUIは内部スレッドでは機能しません。これを使って

-(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 に答える