作为一个声明式的UI框架,SwiftUI帮我们处理了几乎所有关于UI和数据之间的交互,这使我们不再需要关注数据变化时刷新UI和用户交互以后更新数据的逻辑。
为了实现数据和UI的绑定,我们需要利用Swift的一些关属性包装器来向SwiftUI描述它们之间的关系,那么让我们开始吧。
到公众号【iOS开发栈】学习更多SwiftUI、iOS开发相关内容。
State Properties @State
在前面的一篇文章中当我们给数组添加或者删除元素时,列表会自动响应变化,正是因为使用了@State
来标记View中的model。
struct ContentView: View {
@State private var title: String = ""
var body: some View {
VStack {
Text("\(title)")
TextField("Please Enter Title", text: $title)
}
}
}
使用@State
包装的变量是可以被SwiftUI读取的值,这些值通常是一些字符串或数字等常量值。
当被State包装的属性改变时,SwiftUI会重新计算和绘制使用到该属性的视图所在的整个视图层级,通常是说变量所在View的Body会被重新绘制,在本例子中就是指ContentView
的body。
被
@State
包装的变量一定要用private
修饰,并且这个变量只能在当前vi