[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") } }