Использование неразрешенного идентификатора «Форма» - PullRequest
3 голосов
/ 11 июня 2019

Я пытался воспроизвести приведенный ниже пример 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

Ошибка, которую я получаю в последнем фрагменте:

Использование неразрешенного идентификатора «Форма»

Ответы [ 2 ]

6 голосов
/ 11 июня 2019

Похоже, 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")
        }
    }
}

... производит такой вывод:

enter image description here

1 голос
/ 22 июня 2019

В бета-версии 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...