Say Storyboard A有一个导航控制器和5个视图控制器,并包含"注册"应用程序的一部分。在注册过程的最后一步之后,我想转换到Storyboard B,其中包含应用程序的主要部分。我可以这样到达Storyboard B:
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *initialViewController = [mainStoryboard instantiateInitialViewController];
[self.navigationController presentViewController:initialViewController animated:YES completion:^ {
}];
这很有效,但Storyboard A的所有视图控制器都保留在内存中。我也不想将Storyboard B推送到Storyboard A的导航控制器的导航堆栈,因为Storyboard B拥有它自己的自定义导航。
那么处理这种情况的最佳方法是什么?我需要访问Storyboard B,但我需要该应用程序在完成转换后完全忘记Storyboard A.
答案 0 :(得分:1)
将窗口的根视图控制器重置为故事板B中的初始控制器,这将导致与故事板A关联的整个导航堆栈被取消分配,
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *initialViewController = [mainStoryboard instantiateInitialViewController];
self.view.window.rootViewController = initialViewController;