将RxDataSource添加到UICollectionView时,Xcode崩溃

时间:2017-11-23 01:01:46

标签: ios swift uicollectionview rx-swift rxdatasources

嘿我正在尝试获取一个UICollectionView,由一个使用RxCocoa和RxDataSources的UICollectionViewController托管。

当我使用带有嵌入式UICollectionView的UIViewController时,一切正常。

但是当我尝试通过相同的逻辑连接时:

        self.vm.sections
        .bind(to: self.collectionView!.rx.items(dataSource: self.vm.data))
        .disposed(by: self.bag)

在UICollectionViewController内部使用UICollectionView,Xcode完全崩溃。

是否有关于RxDataSources的遗漏,你不能将它们与UICollectionViewController一起使用?

3 个答案:

答案 0 :(得分:5)

虽然我不知道为什么Xcode会崩溃,但它似乎是由RxCocoa的断言检查引起的。

默认设置UICollectionViewController collectionView的数据来源。 如何在绑定observable之前将其设置为nil

self.collectionView!.dataSource = nil
self.vm.sections
.bind(to: self.collectionView!.rx.items(dataSource: self.vm.data))
.disposed(by: self.bag)

答案 1 :(得分:2)

如果从UITableViewController继承,则必须在执行整个表重新加载或刷新操作时调用tableView.datasource = nil

答案 2 :(得分:-1)

您不应将UICollectionViewControllerRxDataSource

一起使用

使用RxDatasource时,必须使用UIViewController并在其中创建UITableView或UICollectionView。