我的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)
例如,或将它们保存为菜单视图控制器中的实例变量。但到目前为止还没有工作。
我感谢任何建议。
答案 0 :(得分:1)
这样做的最佳方式是什么?
最好的方法是不要。弹出视图控制器后,让它不再存在。保留其 state (其实例属性的值),并在下次使用它重建接口;不保留视图控制器实例本身。