#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. Супер! Спасибо