[SwiftUI] Do something after toggle value changed

這個用法找好久 @@ 一定要紀錄一下
在 SwiftUI 中的 Toggle 是一個圖形的開關
這個東西 算是只做一半 跟 Button 比的話
因為 Button 可以觸發事件:
    Button(action: {動做}) {顯示}
可是:
    Toggle(isOn: 綁定變數) {顯示}
這樣變成如果只是撥動 Toggle 的話 是沒辦法直接動做的
其實這問題在 Xcode 11 beta 版就已經有人反應 也有對應方式
不過  因為 BindingObject 被廢棄 換成 ObservableObject
裡面的用法也變了  所以一直找不到到底要怎樣正確去觸發動作
最後找到以下的寫法
可以在撥動 Toggle 的時候 觸發出動作

class toggleClass: ObservableObject {
    var obChange = ObservableObjectPublisher()
 
    @ Published var toggleOnOff = false {
        willSet {
            self.obChange.send()
            print("You can do some thing here~~")
        }
    }
}

struct ContentView: View {
    @ObservedObject var toggleState = toggleClass()

    Toggle(isOn: $toggleState.toggleOnOff) {
        Text("test")
    }
}

留言

這個網誌中的熱門文章

Ubuntu 64bit 32bit 的問題

[RDKM] Set up Env. in Windows10 WSL