SwiftUI 中的 ForEach

Posted

技术标签:

【中文标题】SwiftUI 中的 ForEach【英文标题】:ForEach in SwiftUI 【发布时间】:2019-09-13 16:22:27 【问题描述】:

使用 ScrollView 和 ForEach 时代码如下:

ScrollView(.horizontal,showsIndicators: false) 
                HStack 
                    ForEach(self.QUOTES, id: \.self)  qt in
                        Text(qt)
                    
                
            

没问题,没问题。 但是当我想在 ForEach 块中使用任何代码(比如添加图像)时,如下代码:

ScrollView(.horizontal,showsIndicators: false) 
                HStack 
                    ForEach(self.QUOTES, id: \.self)  qt in
                        Text(qt)
                        Image(systemName: "a.square.fill")
                               .resizable()
                               .frame(width: 40, height: 40)
                    
                
            

我在写作时收到以下错误: 无法推断复杂的闭包返回类型;添加显式类型以消除歧义

【问题讨论】:

您是否尝试过将您的TextImage 放入某种堆栈中?堆栈还是 Hstack?老实说,这意味着 no 进攻,这是非常基本的 SwiftUI。也许您的 HStack 在 FroEach 中太……外……。但是用更简单的东西统计≥Maybe A List。或者可能是View。将它移到它的 own 结构中。 (我的选择?Button。谁在乎它是否不做任何事情。按照您的意愿进行布局。)照原样,您需要 Group 您的代码或使用一堆源代码。但是也?照原样,您的问题无助于说出哪个。 【参考方案1】:

ForEach 结构需要包含单个视图,因此您需要根据您希望布局呈现的方式对文本和图像进行分组或将它们嵌入堆栈中。

ScrollView(.horizontal,showsIndicators: false) 
    HStack 
        ForEach(self.QUOTES, id: \.self)  qt in
            Group 
                Text(qt)
                Image(systemName: "a.square.fill")
                       .resizable()
                       .frame(width: 40, height: 40)
            
        
    

【讨论】:

以上是关于SwiftUI 中的 ForEach的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 中的动画状态变化

如何在 SwiftUI 的 ScrollView 中制作动画? SwiftUI 中的手风琴风格动画

SwiftUI 中的@FetchRequest

SwiftUI:随机“调用中的额外参数”错误

如何知道 UIKit 视图控制器中的 swiftUI 事件? ||如何提供 swiftUI 和 uikit 之间的通信

SwiftUI:表单中的按钮