Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 按快捷键时更新按钮用户界面_Swift_Xcode_Swiftui - Fatal编程技术网

Swift 按快捷键时更新按钮用户界面

Swift 按快捷键时更新按钮用户界面,swift,xcode,swiftui,Swift,Xcode,Swiftui,我有一个包含按钮列表的视图,每个按钮代表一个播放器。我的目标是在按下各自的按钮时为球队添加一名球员 struct AddPlayers: View { var team: Team var playerData = getPlayers() var body: some View { List(playerData) { player in Button(action: { addPlayerToT

我有一个包含按钮列表的视图,每个按钮代表一个播放器。我的目标是在按下各自的按钮时为球队添加一名球员

struct AddPlayers: View {
    var team: Team
    var playerData = getPlayers()

    var body: some View {
        List(playerData) { player in
            Button(action: {
                addPlayerToTeam(teamID: team.id, playerID: player.id)

                // update the PlayerRow to show player was added to team
            }) {
                PlayerRow(player: player, team: self.team)
            }
        }
        .navigationBarTitle(Text("Players"))
    }
}

struct PlayerRow: View {
    var player: Player
    var team: Team

    var body: some View {

        let view = HStack {
            Text(verbatim: player.FirstName)
            Text(verbatim: player.LastName)

            Spacer()

            // displays true if player is on the team
            if playerInTeam(team: team, player: player) {
                Text("True")
            }
        }

        return view
    }
}
当按下按钮时,我可以将玩家添加到团队中,但我还不知道如何更新UI。目前,如果我关闭应用程序并重新打开它以强制重新加载UI,则在正确的播放器上显示“True”

我试图使
playerData
成为
@State
变量,并在每次按下按钮时更新
playerData
。这会导致行
PlayerRow(player:player,team:self.team)
运行,但是从未输入
PlayerRow
的主体,因此UI不会更新

struct AddPlayers: View {
    var team: Team
    @State var playerData = getPlayers()

    var body: some View {
        List(playerData) { player in
            Button(action: {
                addPlayerToTeam(teamID: team.id, playerID: player.id)

                // attempt to force reload the List
                playerData = getPlayers()
            }) {
                // called due to playerData = getPlayers()
                PlayerRow(player: player, team: self.team)
            }
        }
        .navigationBarTitle(Text("Players"))
    }
}

struct PlayerRow: View {
    // this sections is run due to playerData = getPlayers()
    var player: Player
    var team: Team

    var body: some View {

        // code does not enter here
        let view = HStack {
            Text(verbatim: player.FirstName)
            Text(verbatim: player.LastName)

            Spacer()

            // displays true if player is on the team
            if playerInTeam(team: team, player: player) {
                Text("True")
            }
        }

        return view
    }
}

感谢您的帮助

我还面临着一个类似的问题,即在swift UI中更新按钮按下时的按钮图像。您找到问题的解决方案了吗?我还面临着一个类似的问题,即在swift UI中更新按钮按下时的按钮图像。你找到问题的答案了吗?