diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2020-07-07 14:52:28 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2020-07-07 14:52:28 +0200 |
| commit | 66e374e6d4c686c19506ddeb45c09a70818d26e1 (patch) | |
| tree | dfdddde026d5c7a6b8874cb4fd0869dba1feecd4 /ios/MullvadVPN/RootContainerViewController.swift | |
| parent | 4097b39627b618eb95cfad290e20aea6ab32fd29 (diff) | |
| parent | d246d6186df578c64eb08f05f38bf779e573c294 (diff) | |
| download | mullvadvpn-66e374e6d4c686c19506ddeb45c09a70818d26e1.tar.xz mullvadvpn-66e374e6d4c686c19506ddeb45c09a70818d26e1.zip | |
Merge branch 'move-header-to-xib'
Diffstat (limited to 'ios/MullvadVPN/RootContainerViewController.swift')
| -rw-r--r-- | ios/MullvadVPN/RootContainerViewController.swift | 55 |
1 files changed, 50 insertions, 5 deletions
diff --git a/ios/MullvadVPN/RootContainerViewController.swift b/ios/MullvadVPN/RootContainerViewController.swift index b66c75df4e..0c8ff7e40e 100644 --- a/ios/MullvadVPN/RootContainerViewController.swift +++ b/ios/MullvadVPN/RootContainerViewController.swift @@ -47,9 +47,8 @@ class RootContainerViewController: UIViewController { return viewControllers.last } - @IBOutlet var headerBarView: UIView! - @IBOutlet var headerBarSettingsButton: UIButton! - @IBOutlet var transitionContainer: UIView! + private let headerBarView = HeaderBarView(bundle: nil) + private let transitionContainer = UIView(frame: UIScreen.main.bounds) private(set) var headerBarStyle = HeaderBarStyle.default private(set) var headerBarHidden = false @@ -76,6 +75,8 @@ class RootContainerViewController: UIViewController { margins.right = 24 view.layoutMargins = margins + addTransitionView() + addHeaderBarView() updateHeaderBarBackground() } @@ -157,8 +158,10 @@ class RootContainerViewController: UIViewController { /// Request to display settings controller func showSettings(navigateTo route: SettingsNavigationRoute? = nil, animated: Bool) { - guard let navController = self.storyboard? - .instantiateViewController(identifier: ViewControllerIdentifier.settings.rawValue) + let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) + + guard let navController = mainStoryboard + .instantiateViewController(withIdentifier: ViewControllerIdentifier.settings.rawValue) as? UINavigationController else { return } if let route = route { @@ -169,8 +172,50 @@ class RootContainerViewController: UIViewController { present(navController, animated: animated) } + /// Enable or disable the settings bar button displayed in the header bar + func setEnableSettingsButton(_ isEnabled: Bool) { + headerBarView.settingsButton.isEnabled = isEnabled + } + // MARK: - Private + private func addTransitionView() { + let constraints = [ + transitionContainer.topAnchor.constraint(equalTo: view.topAnchor), + transitionContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor), + transitionContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor), + transitionContainer.bottomAnchor.constraint(equalTo: view.bottomAnchor) + ] + + transitionContainer.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(transitionContainer) + + NSLayoutConstraint.activate(constraints) + } + + private func addHeaderBarView() { + let constraints = [ + headerBarView.topAnchor.constraint(equalTo: view.topAnchor), + headerBarView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + headerBarView.trailingAnchor.constraint(equalTo: view.trailingAnchor) + ] + + headerBarView.translatesAutoresizingMaskIntoConstraints = false + headerBarView.settingsButton.addTarget( + self, + action: #selector(handleSettingsButtonTap), + for: .touchUpInside + ) + + view.addSubview(headerBarView) + + NSLayoutConstraint.activate(constraints) + } + + @objc private func handleSettingsButtonTap() { + showSettings(animated: true) + } + private func setViewControllersInternal(_ newViewControllers: [UIViewController], isUnwinding: Bool, animated: Bool, completion: CompletionHandler? = nil) { // Dot not handle appearance events when the container itself is not visible let shouldHandleAppearanceEvents = view.window != nil |
