Что Xcode ожидает от заполнителя «Binding <Bool>»? - PullRequest
1 голос
/ 18 июня 2020

В SwiftUI у меня есть структура, как показано ниже. Есть привязка var, которая является Bool. Что ожидает Xcode для предварительного просмотра вместо заполнителя Binding<Bool>? true и false возвращают ошибку: «Невозможно преобразовать значение типа 'Bool' в ожидаемый тип аргумента 'Binding'».

import SwiftUI

struct DetailShellView : View {
    @Binding var isPresented: Bool

    var testMessage: String

    var body: some View {
        VStack {
            Button(action: {
                self.isPresented = false
                print("variable message: \(self.testMessage)")
            }) {
                Text("Close modal view")
            }
            Text(testMessage)
        }
    }
}

struct DetailShellView_Previews: PreviewProvider {
    static var previews: some View {
        DetailShellView(isPresented: <#Binding<Bool>#>, testMessage: "donuts")
    }
}

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Вы получаете эту ошибку, потому что SwiftUI ожидает, что вы передадите значение DetailShellView, но вы ничего не передаете. Например:

Я ожидаю апельсинов, а вы даете мне << # Fruit # >>. Это глупый пример, но суть в том, что в вашем классе вам нужно передать фактическое значение bool, поэтому Biding - это способ сказать, я получаю значение откуда-то еще и буду его использовать. Ваш класс DetailShellView ожидает такое значение.

Итак, вы можете передать фактическое значение, например:

struct DetailShellView_Previews: PreviewProvider {
    static var previews: some View {
        DetailShellView(isPresented: .constant(true), testMessage: "donuts")
    }
}
1 голос
/ 18 июня 2020

Вы можете предварительно просмотреть оба состояния, например. как показано ниже

static var previews: some View {
  Group {
    DetailShellView(isPresented: .constant(true), testMessage: "donuts")
    DetailShellView(isPresented: .constant(false), testMessage: "donuts")
  }
}
...