aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2019-05-19 04:05:44 +0530
committerRoopesh Chander <roop@roopc.net>2019-05-26 00:12:42 +0530
commitc30d491edc1f4b56a729992e52edf5828d8d7208 (patch)
tree42f0840c8df067b40849ab1bfbd0992bc4cd2b76
parentiOS: Refactor showing of the tunnel detail (diff)
downloadwireguard-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.swift22
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)
+ }
+ }
+ }
+}