Вызов функции при изменении переменной состояния / переключении сегментированного управления - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь выяснить, как вызвать функцию для обновления базы данных Firebase при переключении сегментированного элемента управления. Есть идеи? Пробовал didSet () , но, похоже, не работает.

Переменная

@State var exteriorIndex = 1

Сегментированное управление:

Picker("Numbers", selection: $exteriorIndex) {
                ForEach(0 ..< exteriorOptions.count) { index in
                    Text(self.exteriorOptions[index]).tag(index)
                }
            }
            .pickerStyle(SegmentedPickerStyle())
            .frame(width: 950/2, height: 78/2)

DataUpdate () Функция (которую необходимо вызвать)

func dataUpdate() {
    print("DataUpdate Running..")

    var exterior = false
    if exteriorIndex == 1 {
        exterior = true
    }

    else {
        exterior = false
    }

    let db = Firestore.firestore()

    db.collection("settings").document("LI").setData([
        "exterior": exterior
    ]) { err in
        if let err = err {
            print("Error writing document: \(err)")
        } else {
            print("Document successfully written!")
        }
    }
}

1 Ответ

0 голосов
/ 03 апреля 2020

Используйте это

Picker("Numbers", selection: Binding<Int>(
    get: { self.exteriorIndex },
    set: {
            self.exteriorIndex = $0
            self.dataUpdate()
    }) {
    ...
...