繁体   English   中英

SwiftUI 中的列表不会显示

[英]List in SwiftUI won't show up

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

struct ScrollableCalendar: View {

    var body: some View {
        var someArray = [["May", "10", "2020"],["May", "11", "2020"],["May", "12", "2020"]]
        ScrollView(.horizontal, showsIndicators: false) {
                CalendarDateHorizBase(dates: someArray)
        }
        
    }

}


struct CalendarDateHorizBase: View {
    var dates: Array<Array<String>>
    
    var body: some View {
        HStack {
            ****THE LOGIC ERRROR OCCURS IN THIS LIST****
            List(dates, id: \.description) { date in
                    CalendarDate(month: date[0], day: date[1], year: date[2])
                
            }
        }
    }
}


*** CalendarDate() 是另一个视图,它需要一个月、一天和一年(所有字符串)并很好地显示它们。 该错误与 CalendarDate() 无关***

当我尝试在没有列表的情况下对元素进行硬编码时,一切正常。 但是,当我使用列表时,屏幕变得完全空白。 我不知道为什么。 有没有人有任何想法? 谢谢!

您的日期需要是正确的 model,因为它无法被列表识别。

而且我相信你有充分的理由使用 HStack,因为我希望你知道这个列表只是垂直的。

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

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: "/")
    }
}

所以现在你可以用它来建立你的List

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)
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM