vA、vB、vC の 3 つの viewController クラスがあります。
次のような vA のメソッドがあります。
- (void) showMessage:(NSString *)message withTitle:(NSString *)title {
... bla bla
}
私は vB をプッシュする self.navigationController です。vB で vA からこのメソッドを実行したいので、vB で次のようにプロパティを作成しました。
@property (nonatomic, strong) void (^showMessage)(NSString *message, NSString *title);
vA 内に vB を作成し、それをプッシュする直前に、次のようにします。
vB.showMessage = ^(NSString *message, NSString *title){
[myself showMessage:message withTitle:title];
};
vB から showMessage ブロックを呼び出すことができます。
私の問題は次のとおりです。vB からプッシュする 3 番目の viewController である vC に、この同じメソッドを転送したいと考えています。したがって、これは vA からメソッドを実行する vC です。
vA pushing vB pushing vC
それをvCに転送する簡単な方法はありますか、それともvCで別の同等のプロパティを作成し、メソッドをブロックにラップするということをすべて繰り返す必要がありますか? すでにブロックであるため、これが当てはまる場合は、次のことを行う必要があります。
vC.showMessage = ^(NSString *message, NSString *title){
self.showMessage(message, title);
};
右?
今後もこのブロックを使い続けたいと思います。私はそれに恋をしています。
通知、デリゲートなどを使用できることはわかっていますが、このブロックの新しいものはよりシンプルで、コードがタイトになります。