-
Notifications
You must be signed in to change notification settings - Fork 0
/
FlowCoordinator.swift
66 lines (59 loc) · 2.15 KB
/
FlowCoordinator.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//
// FlowCoordinator.swift
// sample-coordinator
//
// Created by 加賀江 優幸 on 2017/12/24.
// Copyright © 2017年 yuutetu. All rights reserved.
//
import UIKit
class FlowCoordinator: Coordinator {
let navigationController: UINavigationController
let firstViewController: ViewController
let secondViewController: ViewController
let thirdViewController: ViewController
private var viewControllers: [UIViewController] = []
init(navigationController: UINavigationController) {
self.navigationController = navigationController
self.firstViewController = ViewController.viewController(
with: "First View",
buttonModels: []
)
self.secondViewController = ViewController.viewController(
with: "Second View",
buttonModels: []
)
self.thirdViewController = ViewController.viewController(
with: "Third View",
buttonModels: []
)
}
func start() {
viewControllers = navigationController.viewControllers
navigationController.pushViewController(firstViewController, animated: true)
firstViewController.buttonModels = [
ViewController.ButtonModel(title: "Next", closure: {
self.displaySecond()
})
]
secondViewController.buttonModels = [
ViewController.ButtonModel(title: "Next", closure: { [weak self] in
self?.displayThird()
})
]
thirdViewController.buttonModels = [
ViewController.ButtonModel(title: "Finish", closure: { [weak self] in
self?.finish()
})
]
}
private func displaySecond() {
navigationController.pushViewController(secondViewController, animated: true)
}
private func displayThird() {
navigationController.pushViewController(thirdViewController, animated: true)
}
private func finish() {
// かなり強引な感じがあるので、やっぱりフロー系はModalで出すべきか。
navigationController.setViewControllers(viewControllers, animated: true)
}
}