SwiftUI:当我使用这个简单的结构单击行上的任意位置时,为什么两个按钮都会触发?

问题描述 投票:0回答:1

这是一个简单的 swiftui 结构,它应该在我的 iOS 应用程序中生成单行玩家列表。它由一个按钮、一些文本和第二个按钮组成。当我单击任一按钮(或者实际上单击文本本身)时,与这两个按钮关联的功能都会触发。我不明白为什么。我期望并希望按钮能够独立操作并且仅针对特定玩家。有什么想法吗?

struct PlayerRowView: View {
   @EnvironmentObject var viewModel: ViewModel
   var player: Player
   
   var body: some View {
      HStack(alignment: .center) {
         Button(action: { viewModel.shiftPlayerDown(player) })
         { Label("", systemImage: "arrow.turn.left.down") }
         
         Text(player.name).frame(width:250, height: 40)
            .frame(width:250)
         
         Button(action: { viewModel.removePlayerFromLineup(player) })
         { Label("", systemImage: "minus.circle.fill") }
      }
   }
}

这样称呼:

      List {
         ForEach(viewModel.lineup) { PlayerRowView(player: $0) }
      }
list swiftui button
1个回答
0
投票

经过进一步调查,我发现通过以下任一方式生成列表都是有效的。我仍然不明白为什么我使用的版本不能。我觉得应该是这样

   // this works
   Group {
      List(viewModel.lineup) { PlayerRowView(player: $0) }
   }

   // so does this
   ScrollView {
      List(viewModel.lineup) { PlayerRowView(player: $0) }
   }
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.