问题描述
我有一个下拉列表,其中显示了一些选项。我想创建一个发布该发布然后被点击的选项的发布者。
@Published var selectedDropdown: Dropdownviewmodel?
struct Dropdownviewmodel {
var options: [Dropdownoption]
...
}
struct Dropdownoption {
var select = PassthroughSubject<Void,Never>()
...
}
这是我必须去的地方
var optionTap: AnyPublisher<Dropdownoption,Never> {
let selectedDropdown = $selectedDropdown.compactMap { $0 }
let options = selectedDropdown.map { $0.options }
let selectStream = options.map {
$0.map { option in option.select.flatMap { Just(option) } }
}.erasetoAnyPublisher()
return selectStream
}
我希望在有select.send(())时发出Dropdownoption
的流,但是在这里我映射了将不起作用的映射-我可以在这里使用运算符吗?
编辑:
这就是我实际进行下拉水龙头的方式...
var dropdownTaps: AnyPublisher<Dropdownviewmodel?,Never> {
Publishers.Merge3(
tap(on: dropdown1),tap(on: dropdown2),tap(on: dropdown3)
).erasetoAnyPublisher()
}
private func tap(on dropdown: Dropdownviewmodel) -> AnyPublisher<Dropdownviewmodel?,Never> {
dropdown.tap.map { dropdown }.erasetoAnyPublisher()
}
dropdownTaps.assign(to: &$selectedDropdown)
如果可能的话,我想达到类似的目的
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)