swift - 如何使用 SwiftUI 交替行?

标签 swift swiftui swiftui-list

当我在摆弄 SwiftUI 时,我想知道如何让水平 ScrollView 具有 2 个交替行。

我在使用示例时收到以下消息:

The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions

import SwiftUI

struct LabelFilter: View {
    var allLabels = ["one", "two", "three", "four", "five", "six", "seven"]

    var body: some View {
        ScrollView(.horizontal, showsIndicators: false) {
            VStack {
                HStack {
                    ForEach(allLabels.indices) { index in
                        if (index % 2 == 0) {
                            LabelButton(label: self.allLabels[index]) { }
                        }
                    }
                }.padding()
                HStack {
                    ForEach(allLabels.indices) { index in
                        if (index % 2 == 1) {
                            LabelButton(label: self.allLabels[index]) { }
                        }
                    }
                }.padding()
            }
        }
    }
}

为什么会发生这种情况,如何解决它以及是否有更好的解决方案?

最佳答案

此代码编译:

struct LabelFilter: View {
    var allLabels = ["one", "two", "three", "four", "five", "six", "seven"]

    var evenLabels: [String] {
        stride(from: 0, to: allLabels.count, by: 2).map { allLabels[$0] }
    }

    var oddLabels: [String] {
        stride(from: 1, to: allLabels.count, by: 2).map { allLabels[$0] }
    }

    var body: some View {
        ScrollView(.horizontal, showsIndicators: false) {
            VStack {
                HStack {
                    ForEach(oddLabels, id: \.self) { label in
                        Text(label)
                    }
                }.padding()
                HStack {
                    ForEach(evenLabels, id: \.self) { label in
                        Text(label)
                    }
                }.padding()
            }
        }
    }
}

关于swift - 如何使用 SwiftUI 交替行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58285963/

相关文章:

ios - MapKit 避开某些路线(高速公路、收费站等)

swift:如何使用 mongoDB Realm 数据库和身份验证保持 ios 用户登录

macos - 如何让 SwiftUI List/OutlineGroup 懒惰地用于像文件系统这样的大树?

ios - 将 TableView 添加到详细 View Controller

objective-c - 如何在 Swift 中调用 [self new]

ios - 在 SwiftUI 中切换 View 后 Firebase 图像为空

ios - Firebase 和 SwiftUI 实时预览的问题

swiftui - 如何在 SwiftUI 中有效过滤长列表?

SwiftUI 覆盖阻止列表滚动事件

ios - 将函数传递给完成处理程序