【发布时间】:2020-08-09 08:29:13
【问题描述】:
我了解了 SwiftUI,但在 SwiftUI 中理解 List 有困难。
列表定义如下。
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public struct List<SelectionValue, Content> : View where SelectionValue : Hashable, Content : View {
/// Creates a List that supports multiple selection.
///
/// - Parameter selection: A binding to a set that identifies the selected
/// rows.
///
/// - See Also: `View.selectionValue` which gives an identifier to the rows.
///
/// - Note: On iOS and tvOS, you must explicitly put the `List` into Edit
/// Mode for the selection to apply.
@available(watchOS, unavailable)
public init(selection: Binding<Set<SelectionValue>>?, @ViewBuilder content: () -> Content)
/// Creates a List that supports optional single selection.
///
/// - Parameter selection: A binding to the optionally selected row.
///
/// - See Also: `View.selectionValue` which gives an identifier to the rows.
///
/// - Note: On iOS and tvOS, you must explicitly put the `List` into Edit
/// Mode for the selection to apply.
@available(watchOS, unavailable)
public init(selection: Binding<SelectionValue?>?, @ViewBuilder content: () -> Content)
:
:
}
那么我的问题是,我怎样才能拥有支持多选/单选的列表?
我会知道如何设置Binding<Set<SelectionValue>>? 和Binding<Set<SelectionValue>>? 的参数。
我已经阅读了How does one enable selections in SwiftUI's List,并且得到了这段代码。此代码确实支持多选。
var demoData = ["Phil Swanson", "Karen Gibbons", "Grant Kilman", "Wanda Green"]
struct ContentView: View {
@State var selectKeeper = Set<String>()
var body: some View {
NavigationView {
List(demoData, id: \.self, selection: $selectKeeper){ name in
Text(name)
}
.navigationBarItems(trailing: EditButton())
.navigationBarTitle(Text("Selection Demo \(selectKeeper.count)"))
}
}
}
但我仍然无法理解如何设置参数“选择”并设置类型。如何更改为单选列表?什么是Set<String>()...?
有没有人解释得通俗易懂? 我会举个简单的例子...
非常感谢,老师!感谢您阅读我的问题!
【问题讨论】:
标签: ios swift list swiftui swift5