我有 3 个 viewController 类:vA、vB 和 vC。
我有一个关于 vA 的方法,例如:
- (void) showMessage:(NSString *)message withTitle:(NSString *)title {
... bla bla
}
我是 self.navigationController 推 vB。我希望 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 块。
我的问题是:我想将同样的方法转发给 vC,这是我将从 vB 推送的第三个 viewController。所以这是 vC,从 vA 运行一个方法:
vA pushing vB pushing vC
有没有更简单的方法可以将其转发给 vC,或者我是否必须重复在 vC 上创建另一个相等属性并再次将方法包装在一个块中的整个过程。如果这是真的,因为它已经是一个块,我将不得不这样做:
vC.showMessage = ^(NSString *message, NSString *title){
self.showMessage(message, title);
};
对?
我想继续使用这个块的东西。我爱上了它。
我知道我可以使用通知、委托等,但是这个块新的东西更简单并且使代码更紧凑。