Skip to content

Instantly share code, notes, and snippets.

@devs-rootstrap
Last active October 17, 2023 17:00
Show Gist options
  • Save devs-rootstrap/42f5e72610502370926ed7d17cfe5e57 to your computer and use it in GitHub Desktop.
Save devs-rootstrap/42f5e72610502370926ed7d17cfe5e57 to your computer and use it in GitHub Desktop.
Exploring SwiftUI’s Data Flow
struct ContentView: View {
@AppStorage("username") var username: String = "guest"
var body: some View {
VStack {
Text("Welcome, \(username)!")
TextField("Enter your username", text: $username)
}
}
}
struct MyView: View {
@State var myState = "Hello, world!"
var body: some View {
TextField("Enter some text", text: $myState)
}
}
class UserData: ObservableObject {
@Published var name: String = "John"
@Published var age: Int = 30
}
struct ContentView: View {
@EnvironmentObject var userData: UserData
var body: some View {
VStack {
Text("Name: \(userData.name)")
Text("Age: \(userData.age)")
ChildView()
}
}
}
struct ChildView: View {
@EnvironmentObject var userData: UserData
var body: some View {
VStack {
Text("Name: \(userData.name)")
Text("Age: \(userData.age)")
}
}
}
class MyModel: ObservableObject {
@Published var items: [String] = []
@Published var selectedItem: String?
}
struct MyMasterView: View {
@StateObject var model: MyModel
var body: some View {
List(model.items) { item in
Text(item)
.onTapGesture {
model.selectedItem = item
}
}
}
}
@State var myState = "Hello, world!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment