【问题标题】:What is the property / $property syntax for bindings?绑定的 property / $property 语法是什么?
【发布时间】:2019-10-20 04:38:51
【问题描述】:

handling user input tutorial 所示。

struct LandmarkList: View {
    @State var showFavoritesOnly = true

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

什么是 showFavoritesOnly / $showFavoritesOnly 语法?

它是Binding<T> 独有的东西还是我们可以在我们自己的代码中使用它?

【问题讨论】:

标签: swift swiftui


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的信息。我调查了一下,似乎 $ 语法可用于任何@propertyDelegate。它返回存储值的对象
  • 既然 body 被重新计算,为什么你使用 $ 语法而不是 state 属性的值?那不也一样吗?
猜你喜欢
  • 2012-08-10
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
相关资源
最近更新 更多