如何使用 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 交替行?的主要内容,如果未能解决你的问题,请参考以下文章