[SwiftUI] ActionSheetにイベントを設置する
SwiftUIのActionSheetの選択肢を選んだ時の動作をどこに記述すればいいのかわからなかったので調べてみた。
import SwiftUI
struct ContentView: View {
@State private var isActionSheet = false // アクションシートの表示コントロール用
var body: some View {
Button(action: {
self.isActionSheet.toggle() // ボタンをタップした時に表示する様にする
}) {
Text("ActionSheet")
}
.padding()
.actionSheet(isPresented: $isActionSheet, content: {
ActionSheet(title: Text("select action"),
message: Text("SubTitle"),
buttons: [
.default(Text("Save"), action: {
print("Save") // この選択肢が選ばれた時の動作
}),
.destructive(Text("Delete"), action: {
print("Delete")
}),
.cancel() // アクションシートを閉じるだけ
])
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
ボタンを押した時にisShowActionSheet
の値を切り替えてActionSheet
の表示、非表示をコントロールしている。
ActionSheet
のmessage
は省略が可能
buttons
の中に選択肢と選択肢ごとの動作を記述していく。
.default
,.destructive
はともにaction:
を省略することが可能だが、その場合ActionSheet
が閉じるだけで終わってしまう。