首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带有ForEach的SwiftUI列表在一个VStack中可用,但在另一个中不起作用

是因为ForEach需要在其父视图中使用一个可识别的集合来迭代。在SwiftUI中,VStack是一个容器视图,它不是一个可识别的集合,因此ForEach无法在其中正常工作。

要解决这个问题,可以将ForEach放置在一个可识别的集合上,例如Array或Range。以下是一个示例代码,演示了如何在两个VStack中使用ForEach:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    let items = ["Item 1", "Item 2", "Item 3"]
    
    var body: some View {
        VStack {
            ForEach(items, id: \.self) { item in
                Text(item)
            }
        }
        
        VStack {
            ForEach(0..<items.count) { index in
                Text(items[index])
            }
        }
    }
}

在上面的示例中,我们创建了一个名为items的字符串数组,并在第一个VStack中使用ForEach来迭代数组中的每个元素。在第二个VStack中,我们使用ForEach和Range来迭代数组的索引,并通过索引访问数组中的元素。

对于SwiftUI中的列表,还可以使用List视图来替代VStack。List视图是一个可识别的集合,可以直接使用ForEach来迭代元素。以下是一个示例代码:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    let items = ["Item 1", "Item 2", "Item 3"]
    
    var body: some View {
        List(items, id: \.self) { item in
            Text(item)
        }
    }
}

在上面的示例中,我们使用List视图来创建一个可滚动的列表,并使用ForEach来迭代数组中的每个元素。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云数据库 MySQL 版(CMYSQL):https://cloud.tencent.com/product/cmysql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 移动开发(移动推送、移动分析、移动测试):https://cloud.tencent.com/product/mobile
  • 区块链(BCS):https://cloud.tencent.com/product/bcs
  • 元宇宙(Metaverse):https://cloud.tencent.com/product/metaverse

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券