|
internal class OnboardingViewController: UIViewController { |
|
|
|
... |
|
private func pushRegistrationPage() { |
|
let registerViewController = RegisterViewController() |
|
navigationController?.pushViewController(registerViewController, animated: true) |
|
} |
|
|
|
private func pushLoginPage() { |
|
let loginViewController = LoginViewController() |
|
navigationController?.pushViewController(loginViewController, animated: true) |
|
} |
|
... |
|
|
|
} |
|
|
|
class LoginViewController: UIViewController { |
|
|
|
... |
|
var onShowNextScreen: (Screen -> Void)? |
|
|
|
@IBAction func signUpButtonTapped(sender: UIButton) { |
|
onShowNextScreen?(.Register) |
|
} |
|
|
|
func backToPreviousScreen() { |
|
onShowPreviousScreen?() |
|
} |
|
... |
|
|
|
} |
|
|
|
internal class RegisterViewController: UIViewController { |
|
|
|
... |
|
@IBAction func pushLoginPage(sender: AnyObject) { |
|
onShowNextScreen?(.Login) |
|
} |
|
|
|
func backToPreviousScreen() { |
|
onShowPreviousScreen?() |
|
} |
|
... |
|
|
|
} |
|
|
|
class OnboardingFlowController { |
|
... |
|
private func createLoginScreen() -> UIViewController { |
|
let viewController = LoginViewController() |
|
|
|
viewController.onShowNextScreen = { [weak self] screen in |
|
if case .Register = screen, |
|
let firstViewController = self?.navigationController.viewControllers.first, |
|
let registerViewController = self?.createRegisterScreen() { |
|
self?.navigationController.setViewControllers([ firstViewController, registerViewController ], animated: true) |
|
return |
|
} |
|
self?.onShowNextScreen?(screen) |
|
} |
|
return viewController |
|
} |
|
|
|
private func configureOnShowPreviousScreen() { |
|
onShowPreviousScreen = { [weak self] in |
|
self?.navigationController.popViewControllerAnimated(true) |
|
} |
|
} |
|
... |
|
} |
|
|
|
internal class SettingFlowController { |
|
... |
|
private func createLoginScreen() -> UIViewController { |
|
let viewController = LoginViewController() |
|
|
|
viewController.onShowNextScreen = { [weak self] screen in |
|
if case .Register = screen, |
|
let firstViewController = self?.navigationController.viewControllers.first, |
|
let registerViewController = self?.createRegisterScreen() { |
|
|
|
self?.navigationController.setViewControllers([ firstViewController, registerViewController ], animated: true) |
|
return |
|
} |
|
self?.onShowNextScreen?(screen) |
|
} |
|
return viewController |
|
} |
|
|
|
private func configureOnShowPreviousScreen() { |
|
onShowPreviousScreen = { [weak self] in |
|
self?.navigationController.popViewControllerAnimated(true) |
|
} |
|
} |
|
... |
|
} |