Ios RxSwift如何知道TableView重新加载的结束

Ios RxSwift如何知道TableView重新加载的结束,ios,swift,rx-swift,rxdatasources,Ios,Swift,Rx Swift,Rxdatasources,我想知道重新加载TableView的结尾 然后我想向下滚动到表视图的底部 在我使用RxSwift 就在重新加载数据之后 可以使用setContentOffSet或ScrollToRow 我用找到的代码试过了。 从未调用过endUpdates var replyList : BehaviorRelay<[Reply]>! func bind(){ replyViewModel.replyList .asDriver() .drive(replyT

我想知道重新加载TableView的结尾 然后我想向下滚动到表视图的底部

在我使用
RxSwift
就在
重新加载数据之后
可以使用
setContentOffSet
ScrollToRow

我用找到的代码试过了。 从未调用过
endUpdates

var replyList : BehaviorRelay<[Reply]>!

func bind(){

    replyViewModel.replyList
       .asDriver()
       .drive(replyTableView.rx.items){ [weak self] (tableView,row,item) in
           return self?.makeReplyCell(tableView: tableView, replyInfo: item) ?? UITableViewCell()

                }
       .disposed(by: disposeBag)

    replyTableView.endUpdatesEvent
        .asObservable()
        .subscribe({ _ in
            print("Scroll To Bottom")
        })
        .disposed(by: disposeBag)
}

import Foundation
import RxCocoa
import RxSwift

extension UITableView {

    /// Reactive wrapper for `UITableView.insertRows(at:with:)`
    var insertRowsEvent: ControlEvent<[IndexPath]> {
        let source = rx.methodInvoked(#selector(UITableView.insertRows(at:with:)))
                .map { a in
                    return a[0] as! [IndexPath]
                }
        return ControlEvent(events: source)
    }

    /// Reactive wrapper for `UITableView.endUpdates()`
    var endUpdatesEvent: ControlEvent<Bool> {
        let source = rx.methodInvoked(#selector(UITableView.endUpdates))
                .map { _ in
                    return true
                }
        return ControlEvent(events: source)
    }

    /// Reactive wrapper for when the `UITableView` inserted rows and ended its updates.
    var insertedItems: ControlEvent<[IndexPath]> {
        let insertEnded = Observable.combineLatest(
                insertRowsEvent.asObservable(),
                endUpdatesEvent.asObservable(),
                resultSelector: { (insertedRows: $0, endUpdates: $1) }
        )
        let source = insertEnded.map { $0.insertedRows }
        return ControlEvent(events: source)
    }
}
var replyList:BehaviorRelay!
func bind(){
replyViewModel.replyList
.asDriver()
.drive(replyTableView.rx.items){[weak self](表视图,行,项)在
返回self?.makeReplyCell(tableView:tableView,replyInfo:item)??UITableViewCell()
}
.处置(由:处置人)
replyTableView.EndUpdateEvent
.asObservable()
.subscribe({uu}in
打印(“滚动到底部”)
})
.处置(由:处置人)
}
进口基金会
进口RxCocoa
导入RxSwift
扩展UITableView{
///`UITableView.insertRows(at:with:)的被动包装器`
var insertRowsEvent:ControlEvent{
让source=rx.methodInvoked(#选择器(UITableView.insertRows(at:with:))
.map{a in
将[0]返回为![IndexPath]
}
返回控制事件(事件:源)
}
///`UITableView.endUpdates()的被动包装器`
var EndUpdateEvent:ControlEvent{
让source=rx.methodInvoked(#选择器(UITableView.endUpdates))
.map{uuin
返回真值
}
返回控制事件(事件:源)
}
///“UITableView”插入行并结束其更新时的被动包装。
var insertedItems:ControlEvent{
让插入=可观察。组合测试(
insertRowsEvent.asObservable(),
EndUpdateEvent.asObservable(),
结果选择器:{(insertedRows:$0,endUpdates:$1)}
)
让source=insertEnded.map{$0.insertedRows}
返回控制事件(事件:源)
}
}

我不知道在rxswift中是否可能。但也许您可以查看uitableview提供的观察器,而不是dataArray。