I have 3 viewController classes: vA, vB and vC.
I have a method on vA like:
- (void) showMessage:(NSString *)message withTitle:(NSString *)title {
... bla bla
}
I am self.navigationController pushing vB. I want vB to run this method from vA, so what I did was to create a property in vB like this:
@property (nonatomic, strong) void (^showMessage)(NSString *message, NSString *title);
and when I create vB inside vA and just before pushing it, I do this:
vB.showMessage = ^(NSString *message, NSString *title){
[myself showMessage:message withTitle:title];
};
and I can call showMessage block from vB.
My problem is this: I want to forward this same method to vC that is a third viewController I will be pushing from vB. So this is vC, running a method from vA:
vA pushing vB pushing vC
Is there a simpler way to forward that to vC or do I have to repeat the whole thing of creating another equal property on vC and again wrapping the method in a block. If this is true as it is already a block I will have to do this:
vC.showMessage = ^(NSString *message, NSString *title){
self.showMessage(message, title);
};
right?
I would like to continue using this block stuff. I am in love with it.
I know I can use notifications, delegates, etc., but this block new stuff is simpler and makes code tight.
You can just assign
vC.showMessage = self.showMessage;before pushing tovC. Then callvC.showMessagae(message, title);or when you are invC, just useself.showMessage(message, title);Try it like this,
in
vA.hfile,Add,
Then import
vA.hfile invB.hfile and declare,Do the same declaration in
vC.hfile as well.After that when you are pushing to
vB,and when you are pushing to
vC,Then you can use it as
self.showMessage(@"", @"");in both classes.