在SwiftUI中,如何访问在其关闭过程中调用onDisappear()修饰符的视图?

时间:2020-10-07 03:57:00

标签: swiftui

我认为这是一个非常简单的逻辑,但是在任何地方都找不到解决方案。基本上,我只想访问在修饰符onDisappear的闭包中调用onDisappear()修饰符的视图。

struct HostView: View {
  var body: some View {
    EditView()
    .onDisappear {
      //I want to access the EditView in here and get property1
    }
  }
}
struct EditView: View {
  @State var property1: Int?
}

我找到了一个使用包含静态变量的全局类的解决方案。像这样

class AClass {
  static var tempVar: Int?
}

然后,像这样使用。

struct HostView: View {
  var body: some View {
    EditView()
    .onDisappear {
      //I want to access the EditView in here and get property1
      let a = AClass.tempVar
    }
  }
}
struct EditView: View {
  @State var property1: Int?
  
  //call updateTempVar() somewhere here

  func updateTempVar() {
    AClass.tempVar = property1
  }
}

但是,我认为这不是正确的解决方案。我认为应该还有其他更简单的方法...

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

由于您的HostView是一个简单的结构,因此您可以将EditView作为var放在HostView中,如下所示:

struct HostView: View {
    var editView = EditView() 
    var body: some View {
    editView
        .onDisappear {
            print(editView.property1)
        }
    }
}