Значение привязки SwiftUI по умолчанию (метки аргумента '(wrappedValue :)' не соответствуют ни одной доступной перегрузке) - PullRequest
0 голосов
/ 28 марта 2020

В Swift вы можете определить значения по умолчанию для структуры, которая может быть перезаписана при инициализации:

struct myStruct {
    var a: Int = 1
}
var instance1 = myStruct() // instance1.a -> 1 
var instance2 = myStruct(a: 10) // instance2.a -> 10

Однако, когда я пытаюсь применить это к Привязкам в представлении SwiftUI, я получаю ошибку:

struct MyView: View {
    @Binding var a: Bool = Binding.constant(true)
    var body: some View {
        Text("MyView")
    }
}
Argument labels '(wrappedValue:)' do not match any available overloads

Я хочу создать представление, которое по умолчанию использует постоянное логическое значение, но которое может быть перезаписано «реальным» связыванием:

struct ContainerView: View {
    @State var hasSet = false
    var body: some View {
        Group {
            MyView(a: $hasSet)
            MyView() // should be equivalent to MyView(a: .constant(true))
        }
    }
}

Можно ли определить такое значение по умолчанию для привязки в SwiftUI?

1 Ответ

1 голос
/ 28 марта 2020

Вот оно

struct MyView: View {
    @Binding var a: Bool
    init(a: Binding<Bool> = .constant(true)) {
        _a = a
    }

    var body: some View {
        Text("MyView")
    }
}
...