如何使用 SwiftUI 交替行?

Posted

技术标签:

【中文标题】如何使用 SwiftUI 交替行?【英文标题】:How to alternate rows using SwiftUI? 【发布时间】:2019-10-08 12:01:56 【问题描述】:

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

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

编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式分解为不同的子表达式

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

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

【问题讨论】:

【参考方案1】:

这段代码编译:

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

【讨论】:

以上是关于如何使用 SwiftUI 交替行?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSPredicateEditor/NSRuleEditor 背景设置为交替行?

如何使用 SwiftUI 将图像对齐到列表行的右上角?

SwiftUI - 如何在编辑模式下避免列表中的行缩进,但不使用 onDelete? (附代码/视频)

如何在 SwiftUI 中结合可折叠行使用 List 自定义行内部内容?

SwiftUI - 如何在列表中编辑行?

如何使用 SwiftUI 中的图像修复 NavigationView 列表行中增加的高度"