在SwiftUI中,为了使代码更加容易组织和维护,可以将函数和方法分离到单独的结构体中。这个新的结构体可以被称为ViewModel或Helper,它将包含所有可能与视图相关的逻辑和状态。
例如,考虑这个简单的SwiftUI视图,它显示了一串数字,每次点击屏幕时会增加1:
struct CounterView: View {
@State var count = 0
var body: some View {
VStack {
Text("\(count)")
.font(.title)
.padding()
Button(action: {
self.count += 1
}) {
Text("Increase Count")
}
}
}
}
现在,我们可以将计数器的状态和逻辑分离到一个叫做CounterViewModel的结构体中:
struct CounterViewModel {
var count = 0
mutating func increaseCount() {
count += 1
}
}
struct CounterView: View {
@State var model = CounterViewModel()
var body: some View {
VStack {
Text("\(model.count)")
.font(.title)
.padding()
Button(action: {
self.model.increaseCount()
}) {
Text("Increase Count")
}
}
}
}
这种方法使得视图更加轻盈,因为它们不再需要关心实现细节和状态管理。这也使得代码更容易测试、重构和维护。