我正在尝试使用 SwiftUI
构建一个简单的List
。但是,我无法使用数据数组动态创建行。这是错误消息:Cannot convert value of type '(Setlist) -> SetlistRow' to expected argument type '(_) -> _'
我至少尝试了以下语法,但我总是得到同样的错误。
-
List(setlists) { }
-
List(setlists, rowContent: Setlist.init)
-
ForEach(self.setlists) { setlist in }
这是我的代码:
struct Setlist {
var name: String = "New setlist"
var sets = [SongSet]()
}
struct SetlistManagerView : View {
private var setlists: [Setlist] {
// creates an array of dummy items
}
var body : some View {
List {
ForEach(setlists) {
SetlistRow(setlist: $0)
}
}
}
}
struct SetlistRow : View {
var setlist: Setlist
var body : some View {
let numberOfSongs = setlist.sets.map { $0.songs.count }.reduce(0, +)
return NavigationView {
NavigationButton (destination: SetListView(setlist: setlist)) {
// code for displaying the row
}
}
}
}
列表项需要符合Identifiable
协议,以便将它们用作没有 identified(by:)
参数的集合数据源。
这里的Xcode错误消息具有误导性,因为该软件仍处于测试阶段。