diff options
author | Roopesh Chander <roop@roopc.net> | 2018-12-07 19:05:04 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2018-12-07 19:05:08 +0530 |
commit | 105eca7adcaa41f54228da53e237316e61f08c98 (patch) | |
tree | 84747d6faa72aced77dafb03aab79b641f8c2d64 /WireGuard/WireGuard/UI/iOS/MainViewController.swift | |
parent | Main VC: No need to refresh statuses if the tunnelsManager isn't initialized yet (diff) | |
download | wireguard-apple-105eca7adcaa41f54228da53e237316e61f08c98.tar.xz wireguard-apple-105eca7adcaa41f54228da53e237316e61f08c98.zip |
State restoration: Restore tunnel detail view
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to '')
-rw-r--r-- | WireGuard/WireGuard/UI/iOS/MainViewController.swift | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/WireGuard/WireGuard/UI/iOS/MainViewController.swift b/WireGuard/WireGuard/UI/iOS/MainViewController.swift index 74ad1ca..69f40d5 100644 --- a/WireGuard/WireGuard/UI/iOS/MainViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/MainViewController.swift @@ -23,6 +23,11 @@ class MainViewController: UISplitViewController { super.init(nibName: nil, bundle: nil) self.viewControllers = [ masterNC, detailNC ] + + // State restoration + self.restorationIdentifier = "MainVC" + masterNC.restorationIdentifier = "MasterNC" + detailNC.restorationIdentifier = "DetailNC" } required init?(coder aDecoder: NSCoder) { @@ -67,6 +72,30 @@ extension MainViewController { tunnelsManager.refreshStatuses() } } + + func showTunnelDetailForTunnel(named tunnelName: String, animated: Bool) { + let showTunnelDetailBlock: (TunnelsManager) -> Void = { [weak self] (tunnelsManager) in + if let tunnel = tunnelsManager.tunnel(named: tunnelName) { + let tunnelDetailVC = TunnelDetailTableViewController(tunnelsManager: tunnelsManager, tunnel: tunnel) + let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC) + tunnelDetailNC.restorationIdentifier = "DetailNC" + if let self = self { + if (animated) { + self.showDetailViewController(tunnelDetailNC, sender: self) + } else { + UIView.performWithoutAnimation { + self.showDetailViewController(tunnelDetailNC, sender: self) + } + } + } + } + } + if let tunnelsManager = tunnelsManager { + showTunnelDetailBlock(tunnelsManager) + } else { + onTunnelsManagerReady = showTunnelDetailBlock + } + } } extension MainViewController: UISplitViewControllerDelegate { |