🦋
SwiftUI: Toggleを有効にするときにAlertで確認する処理を挟み込む
- Toggle用のフラグとAlert用のフラグを用意する
- Alertで許可された時の処理を登録
- AlertでキャンセルされたらToggleのフラグをfalseに戻す
struct GeneralSettingsView: View {
@AppStorage("Lever") private var lever = false
@State private var showingAlert: Bool = false
var body: some View {
Form {
Toggle("チェックボックス", isOn: $lever)
.onChange(of: lever) { newValue in
if newValue {
showingAlert = true
}
}
.alert(isPresented: $showingAlert) {
let okButton = Alert.Button.default(Text("OK")) {
print("OKだった時の処理")
}
let cancelButton = Alert.Button.cancel {
lever = false
}
return Alert(title: Text("警告"),
message: Text("本当に良いですか?"),
primaryButton: okButton,
secondaryButton: cancelButton)
}
}
.padding(.horizontal, 50)
.padding(.vertical, 20)
}
}
Discussion