diff options
author | Roopesh Chander <roop@roopc.net> | 2019-05-19 04:05:44 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-05-26 00:12:42 +0530 |
commit | c30d491edc1f4b56a729992e52edf5828d8d7208 (patch) | |
tree | 42f0840c8df067b40849ab1bfbd0992bc4cd2b76 | |
parent | iOS: Refactor showing of the tunnel detail (diff) | |
download | wireguard-apple-c30d491edc1f4b56a729992e52edf5828d8d7208.tar.xz wireguard-apple-c30d491edc1f4b56a729992e52edf5828d8d7208.zip |
iOS: Should be able to call showTunnelDetail multiple times
And the detail views should not stack up.
Signed-off-by: Roopesh Chander <roop@roopc.net>
-rw-r--r-- | WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift index 8c40438..43f58df 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift @@ -255,21 +255,21 @@ class TunnelsListTableViewController: UIViewController { func showTunnelDetail(for tunnel: TunnelContainer, animated: Bool) { guard let tunnelsManager = tunnelsManager else { return } guard let splitViewController = splitViewController else { return } + guard let navController = navigationController else { return } if detailDisplayedTunnel != tunnel { let tunnelDetailVC = TunnelDetailTableViewController(tunnelsManager: tunnelsManager, tunnel: tunnel) let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC) tunnelDetailNC.restorationIdentifier = "DetailNC" - if animated { - splitViewController.showDetailViewController(tunnelDetailNC, sender: self) + if splitViewController.isCollapsed && navController.viewControllers.count > 1 { + navController.setViewControllers([self, tunnelDetailNC], animated: animated) } else { - UIView.performWithoutAnimation { - splitViewController.showDetailViewController(tunnelDetailNC, sender: self) - } + splitViewController.showDetailViewController(tunnelDetailNC, sender: self, animated: animated) } detailDisplayedTunnel = tunnel } + self.presentedViewController?.dismiss(animated: false, completion: nil) } } @@ -402,3 +402,15 @@ extension TunnelsListTableViewController: TunnelsManagerListDelegate { } } } + +extension UISplitViewController { + func showDetailViewController(_ vc: UIViewController, sender: Any?, animated: Bool) { + if animated { + showDetailViewController(vc, sender: sender) + } else { + UIView.performWithoutAnimation { + showDetailViewController(vc, sender: sender) + } + } + } +} |