SwiftUIでチェック付きのListViewを作るのが大変でした。SwiftUI beta4 までOKだったのが Beta5でNGになったので、 検索で見つけたサンプルコードがビルドエラーに! 色々やって以下のコードに落ち着きました。 もっといい方法がありそうなんっだけど。なお、チェック部分は手抜きで文字列です。
import SwiftUI var demoData = [Person(name: "Yamada Taro"), Person(name: "Aoki Ichido"), Person(name: "Sato Koji"), Person(name: "Kojima Masao")] struct PersonView: View { @State var selectKeeper = Set<UUID>() var body: some View { VStack { NavigationView { List { ForEach(demoData) { person in SelectableRow(person: person, selectedItems: self.$selectKeeper) } .navigationBarTitle(Text("Selection Demo \(selectKeeper.count)")) } } } // VStack } } struct Person: Identifiable, Hashable { let id = UUID() let name: String } struct SelectableRow: View { var person: Person @Binding var selectedItems: Set<UUID> var isSelected: Bool { selectedItems.contains(person.id) } var isSelectedStr: String { get { if selectedItems.contains(person.id) { return "Yes" } else { return "No" } } } var body: some View { HStack { Button(action: { if(self.isSelected){ self.selectedItems.remove(self.person.id) } else{ self.selectedItems.insert(self.person.id) } }) { Text("\(isSelectedStr)") } Text(self.person.name) } } }