我一直在尝试使用SwiftUI复制我的应用程序。它有一个RootViewController,根据枚举值,它显示了一个不同的子视图控制器。与在SwiftUI中一样,我们使用视图代替视图控制器,我的代码如下所示:
struct RootView : View {
@State var containedView: ContainedView = .home
var body: some View {
// custom header goes here
switch containedView {
case .home: HomeView()
case .categories: CategoriesView()
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到警告:
包含控制流语句的闭包不能与function builder一起使用
ViewBuilder
。
因此,是否有其他选择可以切换,以便我可以复制此行为?
:)
在过去的几周中,我观看并阅读了大量 MVVM 材料,似乎每个人都以一种或另一种方式进行了重大差异,但没有详细说明。我们是为每个视图还是每个模型创建一个 ViewModel?
让我们以 Recipes 应用为例,其中我们有三个不同的视图:RecipesViewController、RecipeViewController 和 RecipeCell。我认为实现 MVVM 的正确方法是为每个视图创建一个 ViewModel,而不是创建一个 RecipeModel 并在它们之间共享它。
这个例子可能足够基本,我们可能更喜欢一个 ViewModel,但它不正确,是吗?如果两者都可以接受,有人可以解释差异、缺点和好处吗?如果我们有一个网络层,那么只有 ViewModel 应该与之通信,对吗?
谢谢你。