我已经使用RxCollectionViewSectionedReloadDataSource
将数据加载到UICollectionView
中。
let dataSource = RxCollectionViewSectionedReloadDataSource<SectionModel<String, WorkGroup>>(
configureCell: { (_, collectionView, indexPath, item) in
guard let cell = collectionView
.dequeueReusableCell(withReuseIdentifier: WorkGroupCell.identifier, for: indexPath) as? WorkGroupCell else {
return WorkGroupCell()
}
cell.viewModel = item
return cell
}
)
viewModel.items.bind(to: tileCollectonView.rx.items(dataSource: dataSource)).disposed(by: disposeBag)
tileCollectonView.rx.setDelegate(self).disposed(by: disposeBag)
使用上面的代码,我可以显示数据。但我想拖放(重新排序)的单元格。
请让我知道我如何使用RxSwift
重新排序。
我们将非常感谢您的帮助。
2条答案
按热度按时间nhhxz33t1#
通常情况下,您需要一个状态机。
其中的逻辑相当简单:
上面的例子使用了RxCocoa提供的
ItemMovedEvent
作为表视图,为了创建类似的集合视图,你需要将UICollectionViewDragDelegate
Package 在一个委托代理中,关于如何做的文章可以在这里找到:Convert a Swift Delegate to RxSwift Observableszbwhf8kr2#
所以我假设您使用的是
RxDataSources
设置datasource变量后,还需要设置两个属性:x1米1米1x,x1米2米1x
并使用
UICollectionView
方法来启动/更新/结束交互。在我的例子中,我添加了长按手势来处理拖动你就可以把你的手机
在
moveItem
闭包中,应该移动集合中实际数据。