我有一个viewController(我们称之为VC1),它在应用程序启动时显示,它有一个打开modalVC的菜单按钮,在modalVC中有三个按钮打开VC1,VC2,VC3(在VC2,VC3也是有这个菜单按钮)
我运行我的应用程序(在VC1上),我按下菜单按钮(modalVC),打开VC1。
事实证明我现在有两个VC1打开?因为每次按下VC1,都会被添加到1-2 MB的内存中。如何从内存中删除它们?
选择控制器菜单(modalVC)之后必须以某种方式删除之前的所有内容..how?
从VC1,VC2,VC3上的菜单转换: UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:VC1]; [self presentViewController:navController animated:YES completion:nil];
如果我按下菜单按钮并始终选择VC2(10次会这样做)应用程序将减慢
我在菜单中选择VC(modalVC)后尝试了这个
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: self.navigationController.viewControllers];
[allViewControllers removeAllObjects];
self.navigationController.viewControllers = allViewControllers;
答案 0 :(得分:0)
您的菜单实施存在设计缺陷。每当用户点击按钮时,您就会创建每个ViewController的新实例,而不是使用之前创建的按钮。应该使用ViewController Containment实现这样的菜单。这样,容器ViewController将在需要时创建VC1 VC2和VC3,如果它们已经存在则不会重新创建它们。
要了解您将如何做到这一点,请阅读Apple docs中的“实现自定义容器视图控制器”一节