CLASS
ScreenViewController
¶
open class ScreenViewController<ScreenType: Screen>: WorkflowUIViewController
Generic base class that can be subclassed in order to to define a UI implementation that is powered by the given screen type.
Using this base class, a screen can be implemented as:
struct MyScreen: Screen {
func viewControllerDescription(environment: ViewEnvironment) -> ViewControllerDescription {
return MyScreenViewController.description(for: self, environment: environment)
}
}
private class MyScreenViewController: ScreenViewController<MyScreen> {
override func screenDidChange(from previousScreen: MyScreen, previousEnvironment: ViewEnvironment) {
// … update views as necessary
}
}
Properties¶
screen
¶
public private(set) final var screen: ScreenType
screenType
¶
public final var screenType: Screen.Type
Methods¶
init(screen:environment:)
¶
public required init(screen: ScreenType, environment: ViewEnvironment)
init(coder:)
¶
update(screen:)
¶
public final func update(screen: ScreenType)
screenDidChange(from:previousEnvironment:)
¶
open func screenDidChange(from previousScreen: ScreenType, previousEnvironment: ViewEnvironment)
Subclasses should override this method in order to update any relevant UI bits when the screen model changes.