From: Roopesh Chander Date: Sat, 18 May 2019 22:35:44 +0000 (+0530) Subject: iOS: Should be able to call showTunnelDetail multiple times X-Git-Tag: 0.0.20190531-9~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c30d491edc1f4b56a729992e52edf5828d8d7208;p=thirdparty%2Fwireguard-apple.git iOS: Should be able to call showTunnelDetail multiple times And the detail views should not stack up. Signed-off-by: Roopesh Chander --- 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) + } + } + } +}