0

GUIロジックがあるビューコントローラーがあります

このView Controllerから開始されるスレッドがあり、そこでいくつかの処理を行っています

スレッドからしばらくしてから反転したい2つのビューがあります

私が知っているように、ビューコントローラーからのみ反転を行うことができます

カスタム スレッド クラスからビュー コントローラのメソッドを呼び出す方法を教えてください。

前もって感謝します

4

3 に答える 3

1

したがって、私の頭に浮かぶ最初のオプションは次のとおりです。

スレッドクラスからView Controllerにアクセスできる場合は、次のことができます。

  dispatch_async(dispatch_get_main_queue(), ^{
    [yourVc callMethodToFlip];  
  });

アクセスできない場合は、通知を使用できます。

あなたのVC.m

-(void)viewDidLoad {
   [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self
     selector:@selector(methodForFlip)  name:A_NOTIFICATION_NAME object:nil];
}

InYourTreadClass.m

-(void)someMethodThatExecutesAsync {
    //dispatch_async(dispatch_get_main_queue(), ^{
      [[NSNotificationCenter defaultCenter] 
        postNotificationName:A_NOTIFICATION_NAME
       object:nil]; //or yoou can send an object
});
}

もう1つの方法は、ブロックパラメーターを取るカスタムスレッドクラスのメソッドを作成することです.VCからスレッドを作成するたびに、スレッドから呼び出されるブロックパラメーターを送信します.dispatch_async

于 2013-08-09T15:13:25.517 に答える
0

スレッド クラスで、ビュー コントローラーへのポインターを追加します。

@property (nonatomic, assign) YourViewController *viewController;

ビュー コントローラーがスレッドを作成するときに、スレッドのviewControllerプロパティをビュー コントローラーに設定します。

yourThreadClass.viewController = self;

View Controller クラスで、flipViewsメソッドを作成します。

-(void)flipViews
{
    // ...
}

スレッド クラスでは、ビューを反転する必要があるときはいつでも、次のように呼び出します。

[viewController performSelectorOnMainThread:@selector:(flipViews) withObject:nil waitUntilDone:YES];
于 2013-08-09T16:45:28.247 に答える