我有一个这样的视图层次结构:
MainView-> SubView(PresentingView)-> ModalViewc(UIViewController的所有子类)

通过单击ModalView中的按钮,我想同时删除ModalView和PresentingView,因此我可以返回到MainView,后者随后将显示ModalViewX:

MainView-> ModalViewX(UIViewController的所有子类)

[[self presentingViewController] removeFromParentViewController];


上面的代码只是关闭了ModalView,但PresentingView仍然存在。

我的最终目标是让ModalView按钮在返回MainView之前执行一些结论性逻辑。单击该按钮基本上将执行以下操作:


结论逻辑
删除self(ModalView)和PresentingView(如果我可以设置动画效果,则要加分)
告诉MainView展示ModalViewX
(也许我将不得不以某种方式调用ModalView-> viewDidUnload方法中的步骤3)


有关如何执行此操作的建议?

最佳答案

首先,将整个项目嵌入到以MainViewController为根视图的UINavigationController中。要从MainViewController转到SubViewController,请执行以下操作:

- (IBAction) theButtonClicked : (id) sender {
    SubViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"YourIdentifier"];
    [self.navigationController pushViewController:vc animated:YES];
}


这将带您进入下一个UIViewController。如果要传递信息,只需设置vc setVariable:

要返回rootview,只需调用[self.navigationController popToRootViewControllerAnimated:YES]

另一种方法是使用segues,从按钮CTRL+drag到下一个UIViewController。然后应在方法- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender中设置要完成的逻辑,其中目标控制器为segue.destinationViewController

这样,您还可以通过将seguestyle设置为custom并子类化UISegue来添加自定义动画。

10-05 22:39