Обновить объект во всех других структурах Swift

#swift #object #swiftui

#swift #объект #swiftui

Вопрос:

Я пытаюсь изучить Swift.

У меня есть 2 структуры

 struct Player : Identifiable {
var id = UUID()
let teamId : UUID
let namePlayer : String
}

struct Team : Identifiable {
    var id = UUID()
    let nameTeam : String
}
  

В моих представлениях у меня есть TabView

 struct GeneralView: View {
let player : Player
let team : Team
@State private var selectedTab: Int = 2

var body: some View {
    NavigationView {
        TabView(selection: $selectedTab) {

            Settings(player: player, team : team)
                .tabItem {
                    Image(systemName: "gearshape.fill")
                    Text("Settings")
                }.tag(1)
            
            TeamGeneralView(player: player, team : team)
                .tabItem {
                    Image(systemName: "person.3.fill")
                    Text("Team")
                }.tag(2)
  

Давайте попробуем с namePlayer: «Me» nameTeam: «Blue».
Когда я нахожусь в настройках TabView, как я могу обновить team.nameTeam до «красного» и увидеть его в TeamGeneralView?

Для меня это немного «непонятно»…

Ответ №1:

Вам нужно будет player ввести и team в @State переменные GeneralView и передать a Binding в Settings представление:

 struct GeneralView: View {
   @State var player: Player
   @State var team: Team
   // ...

   var body: someView {
       // ...
       Settings(player: $player, team: $team)

       // ...
       TeamGeneralView(player: player, team : team)
   }
}
  

Затем Settings объявит его свойства как @Binding . Это было бы что-то вроде этого:

 struct Settings: View {
   @Binding var player: Player
   @Binding var team: Team
 
   var body: some View {
      VStack() {
         TextField("player", text: $player.namePlayer)
         TextField("team", text: $team.nameTeam)
      }
   }
}
  

Комментарии:

1. Супер! Спасибо