今天介紹Alert(或是更多時候大家會叫他Dialog)
還有一個跟Alert很像的東西
以前在UIKit叫ActionSheet(SwiftUI改叫ConfirmationDialog)
就是從下面彈上來的選單
跟Alert最大的不同就是confirmationDialog是可以點背景取消的
但Alert不行
還有SwiftUI的Alert改成最多只有兩個按鈕
所以如果你有多個選項,就改使用ConfirmationDialog(數量沒有上限)
要顯示Alert或ConfirmationDialog都是使用Modifier,配合綁定Bool變數
我們只需要決定什麼時候為true就好
SwiftUI會自己幫我們改回false
iOS的Button的role概念,Flutter沒有在分這個的⚠️⚠️⚠️
.cancel代表同時只能出現一個,為粗體
.destructive代表不可逆的操作(如刪除),為紅字
而Alert的init方式有兩種
要嘛只有一個dismissButton(Button沒有要求必須是.cancel)
要嘛剛好有兩個Button(primaryButton(左)跟secondaryButton(右))
不過要注意!!不能兩個Button同時為.cancel,會閃退(同時為.destructive沒關係)PS: 寫稿的時候才發現Alert這個View已經被棄用了,但新的.alert() modifier我覺得太難用了,我不會用,所以先不介紹
最後補充一下
有時我們會透過Alert來做輸入的動作(加上TextField)
但SwiftUI又在iOS16才支援了...
Android | iOS | Flutter | SwiftUI |
---|---|---|---|
Dialog | UIAlertController | AlertDialog | Alert |
Android版:iOS Developer Learning Android. Lesson 11 - Button + Dialog (感受一下使用原生鏈式編程彈出Alert吧)
Flutter版:iOS Developer Learning Flutter. Lesson7 按鈕與對話方塊
https://github.com/mark33699/FDLS