我有2个顶级视图控制器,每个控制器都有自己的导航控制器。我还有一个MenuViewController,它在viewDidLoad上添加到每个顶级视图控制器中,如下所示:
var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var vc : MenuViewController = storyboard.instantiateViewControllerWithIdentifier("MenuViewController") as MenuViewController
addChildViewController(vc)
menuView.addSubview(vc.view)
vc.didMoveToParentViewController(self)
在MenuViewController中,您可以在两个顶级视图控制器之间切换。我目前正在使用此代码在它们之间切换:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if indexPath.row == 0 {
let vc : HomeViewController = storyboard.instantiateViewControllerWithIdentifier("HomeViewController") as HomeViewController
let navigationController = UINavigationController(rootViewController: vc)
self.presentViewController(navigationController, animated: true, completion: nil)
} else if indexPath.row == 1 {
let vc : FoodCraftsViewController = storyboard.instantiateViewControllerWithIdentifier("FoodCraftsViewController") as FoodCraftsViewController
let navigationController = UINavigationController(rootViewController: vc)
self.presentViewController(navigationController, animated: true, completion: nil)
}
}
我担心的是,每次使用菜单在视图之间切换时,它都会分配额外的内存,而不会从内存中删除以前的视图。什么是有效的方法来确保我每次使用菜单切换顶级视图时都不会重新创建视图控制器/浪费内存?
谢谢!
答案 0 :(得分:0)
在HomeViewController
中保留对FoodCraftsViewController
和MenuViewController
的实例的引用。如果指针未设置,则实例化它,否则使用presentViewController
调用中的现有值。