我有一些ViewControllers都有按钮,这些按钮应该与其他按钮相对应。永远不会有一个后退按钮,而是所有东西都通过一堆循环连接起来,这样就永远不会有死胡同。因此,我希望从一个View Controller完全转换到另一个View Controller,并完全删除旧的View Controller。视图控制器之间没有层次结构,也没有父/子关系。我应该如何处理这种情况?
答案 0 :(得分:1)
实例化您要转到的视图控制器,然后将其设置为窗口的根视图控制器。
NextViewController *next = [self.storyboard instantiateViewControllerWithIdentifier:@"Next"]; // or other instantiation method depending on how you create your controller
self.view.window.rootViewController = next;
如果您想在故事板中显示从控制器到控制器的流程,您可以使用自定义segues执行此操作(那时您根本不需要任何代码)。自定义segue的执行方法看起来像这样,
@implementation RootVCReplaceSegue
-(void)perform {
UIViewController *source = (UIViewController *)self.sourceViewController;
source.view.window.rootViewController = self.destinationViewController;
}
如果您想要淡入淡出动画,可以将源视图控制器的快照添加为目标视图控制器视图的子视图,然后将其淡出,
-(void)perform {
UIViewController *source = (UIViewController *)self.sourceViewController;
UIView *sourceView = [source.view snapshotViewAfterScreenUpdates:YES];
[[self.destinationViewController view] addSubview:sourceView];
source.view.window.rootViewController = self.destinationViewController;
[UIView animateWithDuration:.5 animations:^{
sourceView.alpha = 0;
} completion:^(BOOL finished) {
[sourceView removeFromSuperview];
}];
}