我有一个 UITableView,如果满足某些条件,我想将其置于编辑状态。切换编辑的主要方法是通过编辑按钮。
所以我拥有的视图元素是
let tableView = UITableView()
let editButton = UIButton()
以及 tableView 是否应该处于编辑模式来自:
let editing = BehaviorSubject(value: false)
它将使用以下方式连接到 tableView:
editing.subscribeNext { isEditing in
tableView.setEditing(isEditing, animated: true)
}
当点击编辑按钮时,我希望将新值推送到editing
,即对发送到的最新值的否定editing
。最近的值可能是通过点击设置的editButton
,或者它可能来自其他地方。
我不明白如何将按钮按下的流与流结合起来,以editing
允许这种方式没有无限循环,例如
Obervable.combineLatest(editButton.rx_tap.asObservable(), editing) { _, isEditing in
editing.onNext(!isEditing)
}
我知道 tableView 有一个editing
属性,但我不想依赖它,因为我正在寻找可以在其他地方重复使用的更通用的解决方案。我也不希望在实例 var 中跟踪 isEditing 的值,甚至不作为变量(),因为我正在寻找一个无状态的、基于流的解决方案(如果这是可能的话)。
谢谢!