这个问题非常广泛,但我不确定应该关注哪个方面。我的目标是抽象出我的屏幕的重复模式,例如错误,加载,空数据。代表这些状态的视图在我拥有的许多屏幕之间不会有太大变化。也许他们可以参数化以允许这种灵活性(例如showError(message: "404")
)。
我喜欢this article作为封装可重用UI方面的方法。
但它似乎在必要的背景下工作。所以我有一个API调用,我可以showError
,我可以hideError
在响应中。多数民众赞成。
现在我使用RxSwift / MVVM方法,每个屏幕都绑定到输入和输出。我喜欢通过使用" View State"来简化我的屏幕所知道的状态。概念。
正如您在此片段中所看到的,我可以减少视图呈现的单个Observable的大量逻辑。
let getFoos: (String) -> Observable<FooViewStateState> = { query in
fooService.perform(query)
.map { results in
if results.isEmpty {
return ViewState.noResults(query: query)
} else {
return ViewState.matches(query: query, results: results.map { $0.name })
}
}
.startWith(ViewState.searching(query))
}
问题是通过使用枚举ViewState
,我现在还不清楚如何使用之前的命令式API&#34; showLoading / hideLoading ... showError / hideError等...&#34 ;当我打开这个枚举的情况时。如果ViewState Observable发出.loading
我必须隐藏错误屏幕,隐藏空屏幕等。