ObseveredObject Array Issue - PullRequest
       0

ObseveredObject Array Issue

0 голосов
/ 17 января 2020

Я хочу создать коробочное приложение для записи gameData. я хочу показать пользовательские данные в представлении, когда я использую @ObseveredObject var selectedPlayer = PlayerGameData (). Он показывает, что нельзя присваивать свойству: «self» является неизменным .. и как я могу позволить @ObservedObject var Players автоматически изменять мой текст? Если я добавлю var player6 в проигрыватели. Он не изменился автоматически. Казалось, что вам нужно поместить ObseverdObject (player1,2,3) в Players, чтобы его можно было использовать. Вот видео https://www.youtube.com/watch?v=-ZN18DAhXgY&feature=youtu.be

class PlayerGameData: Identifiable, ObservableObject{
  @Published var id = UUID()
  @Published var name: String = ""
  @Published var point: Int = 0
  @Published var atkRebound: Int = 0
  @Published var Rebound: Int = 0


init() {
    for _ in 0 ..< 5 {
       PlayersGameDataArray.append(PlayerGameData())
    }
 }

}

class PlayersGameData: Identifiable, ObservableObject{
  var id = UUID()
  @Published var PlayersGameDataArray: [PlayerGameData] = []

}


struct GameRecordView: View {
@ObservedObject var players : PlayersGameData = PlayersGameData()
@State var playingPlayers : PlayersGameData = PlayersGameData()
@ObservedObject var player1 = PlayerGameData()
@ObservedObject var player2 = PlayerGameData()
@ObservedObject var player3 = PlayerGameData()
@State var selectedPlayer = PlayerGameData()
var body: some View {
    VStack(spacing:30){
        HStack {
            VStack{
            Button(action:{
                self.selectedPlayer = self.player1
            }){
                Text("Player1")
                Image(selectedPlayer.name)
                }
            Button(action: {}){
                Text("change")

                }
            }
        }

        Button(action:{
            self.selectedPlayer = self.player2
        }){
            Text("Player2")

        }
        Button(action:{
            self.selectedPlayer = self.players.PlayersGameDataArray[4]

        }){
            Text("\(playingPlayers.PlayersGameDataArray[4].name)")

        }
        if(players.PlayersGameDataArray.count > 0){
 //            Text("\(selectedPlayer.name)\(selectedPlayer.attRebound)")
            StepperButton(playerData: selectedPlayer)

        }
    }.onAppear(
        perform: AddPlayer
    )
}



func AddPlayer(){

    player1.name = "Frank"
    player2.name = "Jack"
    player3.name = "Petter"
    var player4 = PlayerGameData()
        player4.name = "Andy"
    var player5 = PlayerGameData()
        player5.name = "Robin"
    var player6 = PlayerGameData()
        player6.name = "Jack"
    players.PlayersGameDataArray.append(player1)
    players.PlayersGameDataArray.append(player2)
    players.PlayersGameDataArray.append(player3)
    players.PlayersGameDataArray.append(player4)
    players.PlayersGameDataArray.append(player5)
    players.PlayersGameDataArray.append(player6)
}

}

struct StepperButton:View{
@ObservedObject var playerData: PlayerGameData
var body: some View {
    VStack {

        Text("\(playerData.name)得分\(playerData.point)")
        Stepper(value: $playerData.point, in: 0...100, label: { Text("score:  \(playerData.point)")})
        .padding(3)
        .labelsHidden()

    Text("\(playerData.name)進攻籃板\(playerData.attRebound)")
    Stepper(value: $playerData.attRebound, in: 0...100, label: { Text("atkrebound:  \(playerData.attRebound)")})
        .padding(3)
        .labelsHidden()}

}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...