在我的应用程序中,我有一个按钮出现在每个视图控制器上(按钮在所有视图控制器上保持不变)。单击此按钮时,它应该将用户带到初始视图控制器,基本上重新开始。
单击该按钮时,它会很好地进入初始视图控制器,但问题是它将所有先前视图控制器的堆栈保留在内存中。我不是100%肯定,但似乎是这种情况。如果我继续浏览应用程序,然后单击按钮重新启动,每次重复此循环时应用程序都会使用越来越多的内存。
有没有办法从内存中清除视图控制器堆栈?
以下是我如何实现演示文稿的代码(仅包含相关功能)。该按钮作为右侧栏按钮项目包含在导航选项卡中。
class CustomVC: UIViewController {
override func viewDidLoad() {
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Start Over", style: UIBarButtonItemStyle.Plain, target: self, action: "goToInitialVC")
}
func goToInitialVC() {
let initialVC: UIViewController = self.storyboard!.instantiateInitialViewController() as! UIViewController
self.presentViewController(initialVC, animated: true, completion: nil)
}
}
答案 0 :(得分:1)
这是我在iOS应用中的方式。不幸的是,我刚刚意识到你的是Swift,我的是Objective-C。也许它仍然有用。
AppDelegate.m中的
- (void)resetWindowToInitialView
{
for (UIView* view in self.window.subviews)
{
[view removeFromSuperview];
}
UIViewController* initialScene = [initalStoryboard instantiateInitialViewController];
self.window.rootViewController = initialScene;
}
在其他文件中
....
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate resetWindowToInitialView];
[self dismissViewControllerAnimated:YES completion:nil];
....