import Foundation
struct DataModel: Identifiable {
let id = UUID()
let phoneExtension: Int
var dataA: String
var dataB: Bool
mutating func toggleDataB() {
dataB.toggle()
}
}
var dataSet: [DataModel] = [
DataModel(phoneExtension: 1000, dataA: "Hi Ho", dataB: true),
DataModel(phoneExtension: 2000, dataA: "Hi Ho", dataB: false),
DataModel(phoneExtension: 3000, dataA: "Please", dataB: true),
DataModel(phoneExtension: 4000, dataA: "Work", dataB: false),
DataModel(phoneExtension: 5000, dataA: "For Me", dataB: true)
]
file 2-应用程序打开时的第一个窗口:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView{
List{
ForEach(dataSet.indices, id: \.self) { index in
NavigationLink("\(dataSet[index].phoneExtension)", destination: PlaygroundSecondPage(dataIsOn: dataSet[index].dataB, index: index))
.foregroundColor(dataSet[index].dataB ? .black : .blue)
}
}
}
}
}
file 3,您可以更改切换:
import SwiftUI
struct PlaygroundSecondPage: View {
@State var dataIsOn: Bool
var index: Int
var body: some View {
VStack{
Text("dataIsOn: \(dataIsOn), in dataset: \(dataSet[index].dataB)")
Toggle(
isOn: $dataIsOn,
label: {
Text("Toggle:")
})
.onChange(of: dataIsOn) {
updateB()
}
}
}
func updateB() {
dataSet[index].toggleDataB()
}
}
您需要掌握很多事情来使您的代码工作。 我建议您继续学习Swiftui并进行教程, 非常有用
here是您的代码的一个版本,该版本是编译并运行以帮助您开始的:
struct DataModel: Identifiable {
let id = UUID()
let phoneExtension: Int
var dataA: String
var dataB: Bool
}
struct ContentView: View {
@State var dataSet: [DataModel] = [
DataModel(phoneExtension: 1000, dataA: "Hi Ho", dataB: true),
DataModel(phoneExtension: 2000, dataA: "Hi Ho", dataB: false),
DataModel(phoneExtension: 3000, dataA: "Please", dataB: true),
DataModel(phoneExtension: 4000, dataA: "Work", dataB: false),
DataModel(phoneExtension: 5000, dataA: "For Me", dataB: true)
]
var body: some View {
NavigationStack{
List($dataSet) { $item in
NavigationLink("\(item.phoneExtension)", destination: PlaygroundSecondPage(item: $item))
.foregroundColor(item.dataB ? .black : .blue)
}
}
// to show all dataB
Button("Test button") {
dataSet.forEach {
print($0)
}
}.buttonStyle(.borderedProminent)
}
}
struct PlaygroundSecondPage: View {
@Binding var item: DataModel
var body: some View {
VStack{
Text("dataIsOn: \(item.dataB), in dataset: \(item.dataB)")
Toggle("Toggle:", isOn: $item.dataB)
.onChange(of: item.dataB) {
updateB()
}
}
}
func updateB() {
// item.dataB is already updated from the Toggle
print("----> updateB item.dataB: \(item.dataB)")
}
}