@@ -10,37 +10,27 @@ import Foundation
10
10
import UIKit
11
11
import ReactiveKit
12
12
13
+ public enum LifecycleEvent {
14
+ case viewDidLoad
15
+ case viewWillAppear
16
+ case viewDidAppear
17
+ case viewWillDisappear
18
+ case viewDidDisappear
19
+ case viewDidLayoutSubviews
20
+ case viewWillLayoutSubviews
21
+ }
22
+
13
23
/// Observe UIViewController life cycle events
14
24
public final class ViewControllerLifecycle {
15
25
16
26
private let wrapperViewController : WrapperViewController
17
27
18
- public var viewDidLoad : SafeSignal < Void > {
19
- return self . wrapperViewController. lifecycleEvent ( . viewDidLoad)
20
- }
21
-
22
- public var viewWillAppear : SafeSignal < Void > {
23
- return self . wrapperViewController. lifecycleEvent ( . viewWillAppear)
28
+ public var lifecycleEvents : Signal < LifecycleEvent , Never > {
29
+ self . wrapperViewController. lifecycleEvents
24
30
}
25
31
26
- public var viewDidAppear : SafeSignal < Void > {
27
- return self . wrapperViewController. lifecycleEvent ( . viewDidAppear)
28
- }
29
-
30
- public var viewWillDisappear : SafeSignal < Void > {
31
- return self . wrapperViewController. lifecycleEvent ( . viewWillDisappear)
32
- }
33
-
34
- public var viewDidDisappear : SafeSignal < Void > {
35
- return self . wrapperViewController. lifecycleEvent ( . viewDidDisappear)
36
- }
37
-
38
- public var viewWillLayoutSubviews : SafeSignal < Void > {
39
- return self . wrapperViewController. lifecycleEvent ( . viewWillLayoutSubviews)
40
- }
41
-
42
- public var viewDidLayoutSubviews : SafeSignal < Void > {
43
- return self . wrapperViewController. lifecycleEvent ( . viewDidLayoutSubviews)
32
+ public func lifecycleEvent( _ event: LifecycleEvent ) -> Signal < Void , Never > {
33
+ self . wrapperViewController. lifecycleEvent ( event)
44
34
}
45
35
46
36
public init ( viewController: UIViewController ) {
@@ -53,7 +43,7 @@ public final class ViewControllerLifecycle {
53
43
. keyPath ( \. view, startWithCurrentValue: false )
54
44
. prefix ( maxLength: 1 )
55
45
. bind ( to: viewController) { ( viewController, _) in
56
- self . addAsChildViewController ( viewController) // weak self ?
46
+ self . addAsChildViewController ( viewController)
57
47
}
58
48
}
59
49
}
@@ -72,15 +62,6 @@ private extension ViewControllerLifecycle {
72
62
73
63
final class WrapperViewController : UIViewController {
74
64
75
- public enum LifecycleEvent {
76
- case viewDidLoad
77
- case viewWillAppear
78
- case viewDidAppear
79
- case viewWillDisappear
80
- case viewDidDisappear
81
- case viewDidLayoutSubviews
82
- case viewWillLayoutSubviews
83
- }
84
65
85
66
deinit {
86
67
_lifecycleEvent. send ( completion: . finished)
@@ -163,32 +144,11 @@ extension UIViewController: ViewControllerLifecycleProvider {
163
144
}
164
145
165
146
extension ReactiveExtensions where Base: ViewControllerLifecycleProvider {
166
-
167
- var viewDidLoad : SafeSignal < Void > {
168
- return self . base. viewControllerLifecycle. viewDidLoad
169
- }
170
-
171
- var viewWillAppear : SafeSignal < Void > {
172
- return self . base. viewControllerLifecycle. viewWillAppear
173
- }
174
-
175
- var viewDidAppear : SafeSignal < Void > {
176
- return self . base. viewControllerLifecycle. viewDidAppear
177
- }
178
-
179
- var viewWillDisappear : SafeSignal < Void > {
180
- return self . base. viewControllerLifecycle. viewWillDisappear
147
+ public var lifecycleEvents : Signal < LifecycleEvent , Never > {
148
+ self . base. viewControllerLifecycle. lifecycleEvents
181
149
}
182
-
183
- var viewDidDisappear : SafeSignal < Void > {
184
- return self . base. viewControllerLifecycle. viewDidDisappear
185
- }
186
-
187
- var viewWillLayoutSubviews : SafeSignal < Void > {
188
- return self . base. viewControllerLifecycle. viewWillLayoutSubviews
189
- }
190
-
191
- var viewDidLayoutSubviews : SafeSignal < Void > {
192
- return self . base. viewControllerLifecycle. viewDidLayoutSubviews
150
+
151
+ public func lifecycleEvent( _ event: LifecycleEvent ) -> Signal < Void , Never > {
152
+ self . base. viewControllerLifecycle. lifecycleEvent ( event)
193
153
}
194
154
}
0 commit comments