Swift - 通过侧边菜单

时间:2018-04-03 23:07:35

标签: swift segue navigationcontroller

我的iOS应用中有一个侧边菜单,有几个条目。一旦我点击其中一个,我想通过将它们推入导航堆栈来转换到相应的视图控制器。目前通过以下方式完成:

// Called on click event on table cell
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.tableView.deselectRow(at: indexPath, animated: true)

    // navigate to the corresponding view controller
    switch(indexPath.row){
    case 0:
        let launchScreenNC = self.storyboard?.instantiateViewController(withIdentifier: "LaunchScreenNC") as? UINavigationController
        self.navigationController?.pushViewController((self.launchScreenNC?.viewControllers.first!)!, animated: true)
        break
    case 1:
        let connectionNC = self.storyboard?.instantiateViewController(withIdentifier: "ConnectNC") as? UINavigationController
        self.navigationController?.pushViewController((self.connectionNC?.viewControllers.first!)!, animated: true)
        break
    case 2:
        let syncNC = self.storyboard?.instantiateViewController(withIdentifier: "SyncNC") as? UINavigationController
        self.navigationController?.pushViewController((self.syncNC?.viewControllers.first!)!, animated: true)
        break
    default:
        // nothing to do
        break
    }
}

它可以很好地将第一次切换到新的视图控制器。但是,一旦启动,我想保持这些实例保持活动状态,以保持与每个视图控制器关联的变量状态。

这样做的最佳方式是什么?

我试过

self.navigationController?.popToViewController((self.syncNC?.viewControllers.first!)!, animated: true)
例如,

或将它们保存为菜单视图控制器中的实例变量。但到目前为止还没有工作。

我感谢任何建议。

1 个答案:

答案 0 :(得分:1)

  

这样做的最佳方式是什么?

最好的方法是不要。弹出视图控制器后,让它不再存在。保留其 state (其实例属性的值),并在下次使用它重建接口;不保留视图控制器实例本身。