2

处理用户输入教程中所见。

struct LandmarkList: View {
    @State var showFavoritesOnly = true

    var body: some View {
        NavigationView {
            List {
                Toggle(isOn: $showFavoritesOnly) {
                    Text("Favorites only")
                }
   ...

showFavoritesOnly / $showFavoritesOnly 语法是什么?

它是独一无二的Binding<T>还是我们可以在我们自己的代码中使用它?

4

1 回答 1

2

@State旨在用作 SwiftUI 属性的绑定。body在您的访问者之外对其进行的任何访问都View将崩溃:

Thread 1: Fatal error: Accessing State<Bool> outside View.body

SwiftUI 会自动跟踪所有声明,并在其中任何一个发生更改时@State重新计算适当的声明。body

@State是使用 Swift 5.1@propertyDelegate特性实现的,它可以自定义属性的存储行为。

于 2019-06-04T19:20:39.527 回答