首页 > 解决方案 > SwiftUI ForEach Buttons 制作 1 个大按钮

问题描述

我试图在我的滚动视图中列出多个按钮单元格,但是当我这样做时,当我点击其中任何一个时,它会列出它们,它会单击所有这些单元格,看起来它只是一个带有 4 个不同单元格的大按钮

        ZStack{
        Color("Background")
        VStack{
            ScrollView(showsIndicators: false){
                ForEach(userVM.user?.chats ?? [ChatModel()]){ chat in
                    Button(action:{
                        print(chat.name ?? " ")
                    },label:{
                        Text("\(chat.name ?? " ")")
                    })
                }
            }
        }
    }

标签: swiftui

解决方案


在一个ForEach循环中,您要确保每个ChatModel都是唯一的。通常,您通过在您的 id 中包含一个 idChatModel并使其可识别来做到这一点。

所以试试这个,如果你没有 id ChatModel

ForEach(userVM.user?.chats ?? [ChatModel()], id: \.self){ chat in ...}

或者这个,如果ChatModel有一个ID:

ForEach(userVM.user?.chats ?? [ChatModel()], id: \.id){ chat in ...}

推荐阅读