【发布时间】:2014-05-29 09:50:12
【问题描述】:
假设我有 3 个视图控制器,分别标记为“A”、“B”和“C”。 现在,“A”是窗口的 rootViewController,当点击按钮时,它以模态方式呈现“B”。在“B”中,当一个按钮被点击时,它应该被“A”关闭,然后“A”将立即以模态方式呈现 C。如何做到这一点? 这是我希望实现这一目标的代码,但我没有成功。
在“A”视图控制器中,我声明了一个属性来保存头文件中的一个块,以便在“B”视图控制器被“A”解除时调用。
@property (nonatomic, copy) void (^presentZapLaunch)(void);
这是“A”视图控制器呈现“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];
}
这是由“A”解除的“B”解除方法,“A”应立即呈现“C”
-(void)presentNextViewCon
{
NSLog(@"Hello");
[self.presentingViewController dismissViewControllerAnimated:self completion:^{[(CYCZapZapViewController *)self.presentingViewController presentZapLaunch];}];
}
*请注意,我使用“A”视图控制器作为窗口的 rootViewController,“A”以模态方式呈现“B”视图控制器。 所有“A”、“B”和“C”都是视图控制器。
【问题讨论】:
-
您可以执行以下操作:A->B->C 并从堆栈中弹出控制器 B。因此,每当您按下控制器 C 上的返回按钮时,您都会被带到 A。
-
@Shubham 我使用 A 作为 rootViewController 并且出于某种原因我没有使用 UINavigation Controller。因此,我模态地介绍了 B 视图控制器。现在我希望当 B 视图控制器被 A 解雇时,A 将立即呈现 C 视图控制器。我不认为呈现模态视图控制器正在使用堆栈。如果我错了请告诉我
标签: ios objective-c block presentviewcontroller