切换不同导航控制器中的视图

时间:2014-11-07 17:07:15

标签: ios swift

我有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)
    }
}

我担心的是,每次使用菜单在视图之间切换时,它都会分配额外的内存,而不会从内存中删除以前的视图。什么是有效的方法来确保我每次使用菜单切换顶级视图时都不会重新创建视图控制器/浪费内存?

谢谢!

1 个答案:

答案 0 :(得分:0)

HomeViewController中保留对FoodCraftsViewControllerMenuViewController的实例的引用。如果指针未设置,则实例化它,否则使用presentViewController调用中的现有值。