我有一个这样的视图层次结构:
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
来添加自定义动画。