SwiftUI:ViewBuilder无法基于数组创建视图集合

时间:2019-06-14 15:51:34

标签: swift swiftui

我正在尝试使用List构建一个简单的SwiftUI。但是,我无法通过使用数据数组来动态创建行。这是错误消息: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
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

列表项需要符合Identifiable协议,才能在没有identified(by:)参数的情况下用作收集数据源。

此处的Xcode错误消息具有误导性,因为该软件仍处于测试阶段。