使用未解析的标识符 "Form"

Use of unresolved identifier "Form"

我一直在尝试复制下面的 Apple WWDC 19 示例 - 将 SwiftUI VStack 转换为 Form - 但无济于事。

这是提到 Form 的视频:

https://developer.apple.com/videos/play/wwdc2019/216/ (34:08)

这是我用于 VStack 的代码:

import SwiftUI

struct ContentView : View {
    var body: some View {
        VStack {
            Toggle(isOn: .constant(true)) {
                Text("Toggle")
            }
            Stepper(value:.constant(4), in: 1...10) {
                Text("Stepper")
            }
            Text("Hello World")
        }
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

这是我用于 Form:

的代码
import SwiftUI

struct ContentView : View {
    var body: some View {
        Form {
            Toggle(isOn: .constant(true)) {
                Text("Toggle")
            }
            Stepper(value:.constant(4), in:1...10) {
               Text("Stepper")
            }
            Text("Hello World")
        }
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

我在最后一个片段中遇到的错误:

Use of unresolved identifier 'Form'

似乎 Form 还不是 SwiftUI 的一部分 (?)。

但是您可以使用分组列表来获得相同的结果。

struct ContentView: View {

    var body: some View {
        List {
            Section(header: Text("Section").font(.largeTitle)) {
                Text("Text")
                Toggle(isOn: .constant(true)) { Text("Toggle") }
            }
        }.listStyle(.grouped)
    }

}


Beta 2 开始可用。

您的代码...

struct ContentView : View {
    var body: some View {
        Form {
            Toggle(isOn: .constant(true)) {
                Text("Toggle")
            }
            Stepper(value:.constant(4), in:1...10) {
                Text("Stepper")
            }
            Text("Hello World")
        }
    }
}

...产生此输出:

Beta 2 引入了形式。

List的区别在于不能用数据集初始化

public struct Form<Content> where Content : View {

    public init(content: () -> Content)

    public var body: _View { get }

    /// The type of view representing the body of this view.
    ///
    /// When you create a custom view, Swift infers this type from your
    /// implementation of the required `body` property.
    public typealias Body
}