Home > OS >  Binding To Array Values SwiftUI iOS
Binding To Array Values SwiftUI iOS

Time:07-20

I'm struggling to find how to bind an array value to a Toggle view in SwiftUI.

Lets says I have an observabled class with a Boolean array:

class TestClass: ObservabledObject {
    @Published var onStates: [Bool] = [true, false, true]
    static let shared = TestClass()
}

and in a View I have

...
Toggle(isOn: TestClass.shared.$onStates[0]) { // Throws error 'Referenceing subscript 'subscript(_:)' requires wrapped value of type '[Bool]'
    Text("Example Toggle")
}

Why is it seemingly impossible to bind a particular array value to the toggle button?

Thanks.

CodePudding user response:

We need observer in view for observable object, so fixed variant is

@StateObject var vm = TestClass.shared   // << observer

var body: some View {
    Toggle(isOn: $vm.onStates[0]) { // << binding via observer
        Text("Example Toggle")
    }
}
  • Related