GUIロジックがあるビューコントローラーがあります
このView Controllerから開始されるスレッドがあり、そこでいくつかの処理を行っています
スレッドからしばらくしてから反転したい2つのビューがあります
私が知っているように、ビューコントローラーからのみ反転を行うことができます
カスタム スレッド クラスからビュー コントローラのメソッドを呼び出す方法を教えてください。
前もって感謝します
GUIロジックがあるビューコントローラーがあります
このView Controllerから開始されるスレッドがあり、そこでいくつかの処理を行っています
スレッドからしばらくしてから反転したい2つのビューがあります
私が知っているように、ビューコントローラーからのみ反転を行うことができます
カスタム スレッド クラスからビュー コントローラのメソッドを呼び出す方法を教えてください。
前もって感謝します
したがって、私の頭に浮かぶ最初のオプションは次のとおりです。
スレッドクラスから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
スレッド クラスで、ビュー コントローラーへのポインターを追加します。
@property (nonatomic, assign) YourViewController *viewController;
ビュー コントローラーがスレッドを作成するときに、スレッドのviewController
プロパティをビュー コントローラーに設定します。
yourThreadClass.viewController = self;
View Controller クラスで、flipViews
メソッドを作成します。
-(void)flipViews
{
// ...
}
スレッド クラスでは、ビューを反転する必要があるときはいつでも、次のように呼び出します。
[viewController performSelectorOnMainThread:@selector:(flipViews) withObject:nil waitUntilDone:YES];