ObservedObject return nil 即使在第一个视图 Swiftui 中设置了值
ObservedObject return nil even if a value is set in first view Swiftui
我有一个Class“ActualCourse”
class ActualCourse : ObservableObject {
@Published var id : UUID?
@Published var CourseName : String = ""
}
还有两个结构“设置”和“课程”
struct Settings: View {
@State private var action : Int? = 0
@ObservedObject var objCourse = ActualCourse()
@State var courseId : UUID = UUID()
@State var list : [Course] = [] // list is not empty, I didn't show it to you to make the code lighter
init() {
objCourse.id = UUID()
}
var body: some View {
NavigationView{
VStack{
NavigationLink(destination: Course(), tag: 1, selection: $action){}
List {
let count = list.count
ForEach(0 ..< count, id: \.self){ index in
HStack {
Image(systemName: "chevron.right.circle.fill")
.font(.title)
.onTapGesture {
objCourse.id = list[index].id
objCourse.nomCourse = list[index].nomCourse
print(objCourse.id!) // Id Appear when I click !
self.action = 1
}
但是当我导航到课程视图时,objCourse.id return nil
struct Settings: View {
@ObservedObject var objCourse = CourseActuelle()
....
.onAppear(){
print(self.objCourse.id!) // RETURN nil
}
我做错了什么?我必须在开始时给出一个随机的 UUID,因为我找不到其他方法...
您在第二个视图中创建的 CourseActuelle
独立于您在第一个视图中创建的初始化 id 值的视图。如果您希望它们相同,您可以在第二个视图中使用 @EnvironmentObject
并将其注入第一个视图或以其他方式传递它。
我有一个Class“ActualCourse”
class ActualCourse : ObservableObject {
@Published var id : UUID?
@Published var CourseName : String = ""
}
还有两个结构“设置”和“课程”
struct Settings: View {
@State private var action : Int? = 0
@ObservedObject var objCourse = ActualCourse()
@State var courseId : UUID = UUID()
@State var list : [Course] = [] // list is not empty, I didn't show it to you to make the code lighter
init() {
objCourse.id = UUID()
}
var body: some View {
NavigationView{
VStack{
NavigationLink(destination: Course(), tag: 1, selection: $action){}
List {
let count = list.count
ForEach(0 ..< count, id: \.self){ index in
HStack {
Image(systemName: "chevron.right.circle.fill")
.font(.title)
.onTapGesture {
objCourse.id = list[index].id
objCourse.nomCourse = list[index].nomCourse
print(objCourse.id!) // Id Appear when I click !
self.action = 1
}
但是当我导航到课程视图时,objCourse.id return nil
struct Settings: View {
@ObservedObject var objCourse = CourseActuelle()
....
.onAppear(){
print(self.objCourse.id!) // RETURN nil
}
我做错了什么?我必须在开始时给出一个随机的 UUID,因为我找不到其他方法...
您在第二个视图中创建的 CourseActuelle
独立于您在第一个视图中创建的初始化 id 值的视图。如果您希望它们相同,您可以在第二个视图中使用 @EnvironmentObject
并将其注入第一个视图或以其他方式传递它。