SwiftUI = ObservableObject作为类的选择

问题描述 投票:0回答:1

使用SwiftUI,我想按下一个按钮并让它切换用于过滤图像的类。

在SwiftUI中,该按钮将执行以下操作:

@ObservedObject var currentFilter = FilterChoice()
...
var body: some View {..
  Button(action:{
    print("clicked")
    var newFilter = Luminance()
    self.currentFilter = newFilter
  }) {
     Text("Switch to Luminance Filter")
  }
}

有一个ObservableObject:

class FilterChoice: ObservableObject {  
    @Published var filter = Luminance()
}

哪个被UIViewRepresentable使用:

struct FilteredPhotoView: UIViewRepresentable {
  @ObservedObject var currentFilter = FilterChoice()

  func makeUIView(context: Context) -> UIView {
     ...
     // Code works and pulls correct filter but can not be changed
     let className = currentFilter.filter
     let filteredImage = testImage.filterWithOperation(className)
     ...   
  }...

当前,FilteredPhotoView正在正确返回过滤后的图像。

但是如何使用ObservedObject更改CLASS?

换句话说,ObservedObject在此处正确设置了该类:

class FilterChoice: ObservableObject {
   @Published var filter = Luminance()    
}

但是如何更改此ObservableObject,以便可以在SwiftUI中更改该类?例如,我想单击一个按钮,然后将过滤器更改为另一个类(例如:

new filter = ColorInversion()

我想我了解ObservableObjects的工作原理,但是我不能让它作为类的更改而不是像字符串值之类的简单内容来工作。

swift uikit swiftui combine
1个回答
0
投票

我对文本有些困惑,但是您所需要的不是吗?

var body: some View {
  Button(action:{
    print("clicked")
    self.currentFilter.filter = Luminance() // << put here any new
  }) {
     Text("Switch to Luminance Filter")
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.