Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RxSwift,移除带有动画的单元格_Swift_Rx Swift - Fatal编程技术网

RxSwift,移除带有动画的单元格

RxSwift,移除带有动画的单元格,swift,rx-swift,Swift,Rx Swift,我在一个单元格中有一个自定义按钮,可以从可观察列表中删除项目 self.searchListViewModel.genericList.value.remove(at: index) 所有的逻辑都很好,但我需要一个删除单元格的动画 self.tableView.deleteRows(at: [IndexPath(row: index, section: 0)], with: .fade) 但现在,如果我试图同时使用这两种方法,应用程序会崩溃。很抱歉延迟。以下是rxswift中可设置动画的ta

我在一个单元格中有一个自定义按钮,可以从可观察列表中删除项目

self.searchListViewModel.genericList.value.remove(at: index)
所有的逻辑都很好,但我需要一个删除单元格的动画

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。数据源的插入或删除将与此相关。RxDataSourcesHi Aks您能给我举个例子吗,我应该如何使用它,找不到任何例子,谢谢。