Issue #881
Specify optional value for List(selection:).
This keeps selection on macOS, but not on iPad.
On iPad each row in the List needs to be NavigationLink, no need for .tag. The selection is not updated, need to manually update with onTapGesture
For List selection to work, make sure
- selection binding type matches. Preferablly using ID than Self
- Need to specify
idin ForEach for List to infertag. Otherwise, need to specifytagfor cell
struct Sidebaer: View {
class ViewModel: ObservableObject {
@Published var group: BookGroup?
}
@StateObject private var vm = ViewModel()
var body: some View {
List(selection: $vm.group) {
allView
foldersView
tagsView
}
Note that
- Double-tap will cancel default List selection
- onDrag will interfere with onInsert and selelction
List(selection: $selectedItem) {
ForEach(manager.stack.items) { item in
ItemCell(item: item)
.onDrag {
NSItemProvider(object: item.text as NSString)
}
.tag(item)
}
.onMove { source, destination in
manager.stack.items.move(fromOffsets: source, toOffset: destination)
}
.onDelete { indexSet in
manager.stack.items.remove(atOffsets: indexSet)
}
.onInsert(of: [.text, .url]) { index, itemProviders in
manager.handleInsert(at: index, itemProviders: itemProviders)
}
}
Start the conversation