这是一个简单的 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) }
}
经过进一步调查,我发现通过以下任一方式生成列表都是有效的。我仍然不明白为什么我使用的版本不能。我觉得应该是这样
// this works
Group {
List(viewModel.lineup) { PlayerRowView(player: $0) }
}
// so does this
ScrollView {
List(viewModel.lineup) { PlayerRowView(player: $0) }
}