【问题标题】:ObservedObject return nil even if a value is set in first view Swiftui即使在第一个视图 Swiftui 中设置了值,ObservedObject 也返回 nil
【发布时间】:2020-11-12 08:57:21
【问题描述】:

我有一个班级“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 返回 nil

struct Settings: View {
@ObservedObject var objCourse = CourseActuelle()

....

.onAppear(){
            print(self.objCourse.id!) // RETURN nil
            
        }

我做错了什么?我必须在一开始就给一个随机的 UUID,因为我找不到其他方式怎么做...

【问题讨论】:

    标签: swiftui optional observedobject


    【解决方案1】:

    您在第二个视图中创建的CourseActuelle 独立于您在第一个视图中创建的用于初始化 id 值的那个。如果您希望它们相同,您可以在第二个视图中使用 @EnvironmentObject 并将其注入到第一个视图中或以其他方式传递它。

    【讨论】:

    • 谢谢,environementObject 和 obsservedObject 对我来说不是很清楚......我会进一步了解它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2015-04-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多