RxSwift,用动画去除单元格
问题描述:
我在单元格中有一个自定义按钮,它从可观察列表中删除项目。RxSwift,用动画去除单元格
self.searchListViewModel.genericList.value.remove(at: index)
所有的逻辑工作得很好,但我需要一个动画删除cell.Something这样
self.tableView.deleteRows(at: [IndexPath(row: index, section: 0)],
with: .fade)
但现在如果我想同时使用,应用程序崩溃。
答
对不起。这里是rxswift中动画tableview的例子。
enum MySectionItem {
case a(presentable: APresentable)
case b(presentable: BPresentable)
case c(presentable: CPresentable)
}
extension MySectionItem: IdentifiableType, Equatable {
typealias Identity = String
var identity: Identity {
switch self {
case let .a(presentable):
return presentable.title //Something which can define uniqueness
case let .b(presentable):
return presentable.title
case let .c(presentable):
return presentable.title
}
}
}
对于SectionModel也可以这样做。
enum MySectionModel {
case a(title: String, items: [MySectionItem])
case b(title: String, items: [MySectionItem])
case c(title: String, items: [MySectionItem])
}
extension MySectionModel: AnimatableSectionModelType {
typealias Item = MySectionItem
var items: [Item] {
switch self {
case let .a(title: _, items: items),
let .b(title: _, items: items),
let .c(title: _, items: items):
return items.map { $0 }
}
}
var identity: String {
switch self {
case let .a(title: title, items: _),
let .b(title: title, items: _),
let .c(title: title, items: _):
return title
}
}
init(original: MySectionModel, items: [Item]) {
switch original {
case let .a(title: title, items: _):
self = .a(title: title, items: items)
case let .b(title: title, items: _):
self = .b(title: title, items: items)
case let .c(title: title, items: _):
self = .c(title: title, items: items)
}
}
}
您必须为此使用AnimatableSectionModel。数据源插入或删除将被照顾。 RxDataSources – Aks
嗨阿克斯 你能请示例,我该如何使用它,无法找到任何示例谢谢。 –