diff options
Diffstat (limited to 'WireGuard/WireGuard/UI/iOS/MainViewController.swift')
-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 { |