- Toggleに
Binding<Bool>
を直接渡すのではなく、get/set経由で利用する書き方を見つけたのでメモ。
import SwiftUI
class Manager: ObservableObject {
@Published var lastUpdatedAt: Date = Date()
@Published var isToggleOn = false
}
struct ContentView: View {
@StateObject private var manager = Manager()
var isToggleOn: Binding<Bool> {
Binding<Bool>(
get: { manager.isToggleOn },
set: { newValue in
manager.isToggleOn = newValue
print("ここに処理を挟めるよ!")
manager.lastUpdatedAt = .now
}
)
}
var body: some View {
VStack(alignment: .leading) {
Toggle("Toggle Button", isOn: isToggleOn)
.toggleStyle(.switch)
Text("Last Update: \(manager.lastUpdatedAt)")
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}