【发布时间】:2019-11-25 14:42:31
【问题描述】:
使用 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