Ios SwiftUI won和x27中的列表;我没有出现

Ios SwiftUI won和x27中的列表;我没有出现,ios,swift,xcode,swiftui,Ios,Swift,Xcode,Swiftui,我目前正在编写一个横向滚动日历的代码,该日历水平显示日期。我目前有以下代码(这是一个非常简化的版本): struct ScrollableCalendar:视图{ var body:一些观点{ var someArray=[“5月”、“10日”、“2020年”]、[“5月”、“11日”、“2020年”]、[“5月”、“12日”、“2020年”]] 滚动视图(.horizontal,showsIndicators:false){ CalendarDateHorizBase(日期:someArray

我目前正在编写一个横向滚动日历的代码,该日历水平显示日期。我目前有以下代码(这是一个非常简化的版本):

struct ScrollableCalendar:视图{
var body:一些观点{
var someArray=[“5月”、“10日”、“2020年”]、[“5月”、“11日”、“2020年”]、[“5月”、“12日”、“2020年”]]
滚动视图(.horizontal,showsIndicators:false){
CalendarDateHorizBase(日期:someArray)
}
}
}
结构CalendarDateHorizBase:视图{
变量日期:数组
var body:一些观点{
HStack{
****逻辑错误出现在此列表中****
列表(日期,id:\.description){中的日期
日历日期(月:日期[0],日:日期[1],年:日期[2])
}
}
}
}
***CalendarDate()是另一个视图,它使用月、日和年(所有字符串)并很好地显示它们。该错误与CalendarDate()无关***


当我尝试在没有列表的情况下硬编码元素时,一切都显示良好。但是,当我使用列表时,屏幕将完全变为空白。我不知道为什么。有人有什么想法吗?谢谢

您的日期需要是一个合适的模型,因为它不能通过列表识别


另外,我相信您使用HStack有一些充分的理由,因为我希望您知道列表只垂直排列。

问题在于数据。当您需要在
列表中显示数据列表时
,数据的每个元素都应该
可识别
。实现这一点的一种方法是为数据定义一个结构,并使其可识别:

struct DateEvent: Identifiable {
    let id: String

    let month: String
    let day: String
    let year: String

    init(rawValue: [String]) {
        month = rawValue[0]
        day = rawValue[1]
        year = rawValue[2]

        id = rawValue.joined(separator: "/")
    }
}
因此,现在您可以使用它来建立您的
列表

struct CalendarDateHorizBase: View {
    var dates: [[String]] // same as 'Array<Array<String>>' but more swifty style

    var body: some View {
        HStack {
            List(dates.map { DateEvent(rawValue: $0) }) { date in
                CalendarDate(month: date.month, day: date.day, year: date.year)
            }
        }
    }
}
struct CalendarDateHorizBase:视图{
变量日期:[[String]]//与“Array”相同,但更快速
var body:一些观点{
HStack{
列表(dates.map{DateEvent(rawValue:$0)}{datein
日历日期(月:日期。月,日:日期。日,年:日期。年)
}
}
}
}

您所说的“合适的模型”是什么意思?就像数组之外的另一个数据结构一样?如果您可以更新您的问题并解释如何使其工作,那将非常好。
struct CalendarDateHorizBase: View {
    var dates: [[String]] // same as 'Array<Array<String>>' but more swifty style

    var body: some View {
        HStack {
            List(dates.map { DateEvent(rawValue: $0) }) { date in
                CalendarDate(month: date.month, day: date.day, year: date.year)
            }
        }
    }
}