Let's say I have 3 view controller labeled "A","B" and "C".
Right now, "A" is the rootViewController of the window and it presents "B" modally when a button is tapped. In "B", when a button is tapped it is supposed to be dismissed by "A" and then "A" will present C modally immediately.How can one do that?
Here's my code in hope of achieving this goal but I was unsuccessful in doing so.
At "A" viewController, I declared a property to hold a block at the header file to be called when "B" viewController is dismissed by "A".
@property (nonatomic, copy) void (^presentZapLaunch)(void);
This is "A" viewController present method to present "B"
-(void)presentNextViewCon
{
CYCGestureZapZapViewController *gestureViewCon = [[CYCGestureZapZapViewController alloc]init];
if (!self.presentZapLaunch) {
__weak CYCZapZapViewController *weakRefCon = self;
self.presentZapLaunch = ^{
CYCZapZapViewController *preventWeakRefCon = weakRefCon;
CYCZapZapLaunchViewController *zapLaunch = [[CYCZapZapLaunchViewController alloc]init];
NSLog(@"Called");
[preventWeakRefCon presentViewController:zapLaunch animated:YES completion:nil];
};
}
[self presentViewController:gestureViewCon animated:YES completion:nil];
}
This is "B" dismiss method to dismissed by "A" and "A" should present "C" immediately
-(void)presentNextViewCon
{
NSLog(@"Hello");
[self.presentingViewController dismissViewControllerAnimated:self completion:^{[(CYCZapZapViewController *)self.presentingViewController presentZapLaunch];}];
}
*Note that I'm using "A" view controller as the rootViewController of window, and "A" presents "B" view controller modally.
All "A","B" and "C" are view controllers.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…