实现思路
- 使用状态管理:利用
@State
或@ObservedObject
、@EnvironmentObject
等状态管理机制来存储用户昵称。这样在设置页修改昵称时,其他依赖该状态的视图(用户信息展示页)能实时感知变化。
- 传递数据:通过
Binding
将状态传递给需要的视图,使得设置页对昵称的修改能同步到展示页。
关键代码示例
import SwiftUI
// 定义一个数据模型来存储用户信息
class User: ObservableObject {
@Published var nickname: String
init(nickname: String) {
self.nickname = nickname
}
}
struct ContentView: View {
@StateObject var user = User(nickname: "初始昵称")
var body: some View {
TabView {
UserInfoView(user: user)
.tabItem {
Label("用户信息", systemImage: "person")
}
UserSettingsView(user: $user)
.tabItem {
Label("用户设置", systemImage: "gear")
}
}
}
}
struct UserInfoView: View {
@ObservedObject var user: User
var body: some View {
VStack {
Text("昵称: \(user.nickname)")
}
}
}
struct UserSettingsView: View {
@Binding var user: User
var body: some View {
VStack {
TextField("请输入昵称", text: $user.nickname)
}
}
}