【发布时间】:2014-11-07 17:07:15
【问题描述】:
我有 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)
}
}
我担心的是,每次我使用菜单在视图之间切换时,它都会分配额外的内存,而不是从内存中删除前一个视图。确保每次使用菜单切换顶级视图时不会重新创建视图控制器/浪费内存的有效方法是什么?
谢谢!
【问题讨论】: