今天是列表二部曲
講講List的一些特色應用
我個人的認知
等等要提到的側滑/編輯/多選,才會是SwiftUI中使用List的主要理由
因為如果是單純畫面的呈現
使用ScrollView會比較有彈性(除非客人或老闆能接受你畫面細節改不動)
使用.swipeActions()
可以選擇左邊或右邊
allowsFullSwipe的意思是可否拉到中間就執行動作
因為是actions,所以可以給它多個Button
使用.tint()可以改變底色
然後發現一點很奇怪
可能是因為有底色的關係
所有的system image都變成填滿樣式
最後要注意
如果同一邊的.swipeActions()疊加了多次
例如
.swipeActions(edge: .leading) {
ButtonA()
}
.swipeActions(edge: .leading) {
ButtonB()
}
雖然顯示上會正常
但點擊的效果會被吃掉
在SwiftUI裡有許多專為特定場景設計的Button
EditButton就是其中之一
用來切換是否為編輯狀態
搭配List服用即可達到排序/刪除之功效
接著,List的內含必須是ForEach
才能使用關鍵modifier .onDelete() 跟 .onMove()
在closure裡面分別提供.remove() 跟 .move()
就打完收工~
更簡單了...
只要在List init時提供selection參數
SwiftUI會自動根據你提供的Buinding是否為Set
然後接下來的事幫你處理到好
所以我說如果有用到今天提到的這些功能
用List是很爽的事
根本不用寫幾行code,效果漂漂亮亮亮亮
這在以前UIKit是很難想像的
Android版:iOS Developer Learning Android. Lesson 16 - RecyclerView (這玩意可是跟UITableView差滿多的喔...)
Flutter版:
iOS Developer Learning Flutter. Lesson10 建立列表
iOS Developer Learning Flutter. Lesson11 又是列表(置頂與刷新)
iOS Developer Learning Flutter. Lesson12 還是~列表(輸入與折疊)
iOS Developer Learning Flutter. Lesson13 裁判~可以讓人列完又列這樣的嗎? (多選與側滑)
https://github.com/mark33699/FDLS