【问题标题】:Is there a way to pass (index) which button has been pressed in a ForEach in SwiftUI?有没有办法传递(索引)在 SwiftUI 的 ForEach 中按下了哪个按钮?
【发布时间】:2020-06-08 20:26:42
【问题描述】:

各位好帮手!

当按下 ForEach 按钮时,我正在尝试将具有正确信息的 detailView 从数组加载到我的 MotherView。

我不知道如何传递已按下的卡片,以便在我尝试使用相同信息加载我的 DetailView 时记住索引。这是那里最后一个让我失望的“索引”。如果我用 [0] 替换它,它将显示一切都很好,但只是第一项的示例数据。谁能帮助一个非常沮丧的新程序员?

    ZStack {
        ScrollView(.horizontal) {
            HStack {
                Button(action: {self.showDetailView.toggle()}) {
                    ForEach(flowerData) { index in
                        FlowerCard(flower: self.flower)
                    }

                }

            }
        }

        if showDetailView {
            FlowerDetailView(flower: self.flower[index]
        }
    }

【问题讨论】:

    标签: arrays swift button foreach swiftui


    【解决方案1】:

    为什么不对每张卡片都使用按钮(甚至 onTapGesture),比如(scratchy)

    @State private var clickedCard: Int? = nil
    ...
    
    ForEach(flowerData) { index in
        Button(action: {
            self.clickedCard = index // << store in member
            self.showDetailView.toggle()
        }) {
            FlowerCard(flower: self.flower)
        }
    }
    
    ...
        if showDetailView && index != nil {
            FlowerDetailView(flower: self.flower[index!]
        }
    

    【讨论】:

      猜你喜欢
      • 2021-01-25
      • 2011-01-27
      • 2023-02-23
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      相关资源
      最近更新 更多