我的问题类似于:iPhone modal view inside another modal view?和Can I push a modal view controller from within another modal view controller?,但有一点不同:
我的控制器都不是UINavigationControllers(我认为这就是它们的名称)。
基本上我有这个:
RootView(各种选项,如提交费用,检查日历等) - >提交所选费用并调用以下代码:
EXP = [[ExpensesViewController alloc] initWithNibName:@"ExpensesViewController" bundle:nil];
[self presentModalViewController:EXP animated:YES];
所以现在主视图顶部有一个模态视图。然后在费用模式视图中,我希望能够选择一个打开模态视图的按钮(在类似的代码中)......
我从上面的介绍中的两个问题中了解到这一点基本上看起来像这样:
[controllerA presentModalViewController:Number2 animated:YES];
它可能看起来像这样:
[self.view presentModalViewController:Number2 animated:YES];
因为我不知道如何引用viewcontroller而不创建它的新实例。
另外,当需要关闭第二个模型时,我可以返回到第一个模态视图(基本上我打开一个模态视图来提交费用,然后作为表单的一部分,他们必须选择一个选项 - 用于UI目的是一个新的模态视图是最好的。一旦他们决定一个选择,他们通过关闭额外的细节模态视图返回费用视图,提交费用,一旦他们这样做,然后该模态视图关闭)。
所以不要使用:
[self dismissModalViewControllerAnimated:YES];
它会是:
[self.view dismissModalViewControllerAnimated:YES];
...
谢谢你们:)
答案 0 :(得分:2)
只有UIViewController
及其子类可以呈现模态视图控制器。 self.view
是UIView
个实例,完全不同。
为了节省自己的工作量,你应该坚持两条规则:
[self presentModal…];
。[self dismiss…];
。 通过这种方式,您可以清楚地了解每个视图控制器的所有权和责任。此外,我在几乎所有地方看到的方法都是顶级使用[self.super dismiss…];
来解除视图控制器将在iOS 5上中断。
答案 1 :(得分:0)
您需要在此处使用委托模式。使第一个视图控制器委托,第二个视图控制器委托,依此类推。
如果要关闭调用委托方法,然后可以使用自引用关闭视图。
因此,在第二个视图控制器中,您将调用[delegate dismissTheView]
,它将首先执行,然后调用[self dismissModalViewControllerAnimated];
并向后跟随,直到您到达上一个视图。