2017-01-15 11 views
1

私はcollectionViewを作成し、RxSwiftを使用してコレクションビューにデータを取り込もうとしています。しかし、datasource.configureCellのオブジェクトを返すように見えても、セルは表示されません。 viewDidLoadに私のセットアップに何か問題があると思われますか?collectionView RxSwiftでアイテムが表示されない

セットアップcollectionView

// Create a waterfall layout 
    let layout = CHTCollectionViewWaterfallLayout() 

    //Add CollectionView 
    self.collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height), collectionViewLayout: layout) 

    self.view.addSubview(collectionView) 

    //Customize 
    self.collectionView!.alwaysBounceVertical = true 

    // Collection view attributes 
    self.collectionView.autoresizingMask = [UIViewAutoresizing.flexibleHeight, UIViewAutoresizing.flexibleWidth] 
    self.collectionView.alwaysBounceVertical = true 

    //Register cell 
    collectionView.register(PetsaleCell.self, forCellWithReuseIdentifier: reuseIdentifier) 


    //Constraints 
    self.collectionView.snp.makeConstraints({ make in 
     make.bottom.equalTo(0) 
     make.left.equalTo(0) 
     make.right.equalTo(0) 
     make.top.equalTo(0) 

    }) 

    //Datasource 
    setUpDataSource() 

setUpDataSource

func setUpDataSource() { 
    dataSource.configureCell = { (_, tv, ip, animal: Animal) in 

     let cell = tv.dequeueReusableCell(withReuseIdentifier: self.reuseIdentifier, for: ip) as! PetsaleCell 
     cell.petCellViewModel = PetCellViewModel(animal: animal) 

     return cell 
    } 



    let loadNextPageTrigger = self.collectionView.rx.contentOffset 
     .flatMap { _ in 
      self.collectionView 
       .isNearBottomEdge(edgeOffset: 20.0) 
       ? Observable.just(()) 
       : Observable.empty() 
    } 

    animalViewModel.rx_animals(loadNextPageTrigger) 
     .asDriver(onErrorJustReturn: .empty).map { [SectionModel(model: "Animal", items: $0.animals)] } 
     .drive(collectionView.rx.items(dataSource: dataSource)) 
     .addDisposableTo(disposeBag) 
} 


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize { 
    return CGSize(width: 200, height: 200) 
} 

答えて

0

試してみて、あなたのviewDidLoad(に以下を追加します)

collectionView.delegate = self 
collectionView.dataSource = self 

、その後delegを実装食べて、次のように自分のクラスへの拡張機能としてdatasouce:

extension MyClass: UICollectionViewDelegate, UICollectionViewDataSource  { 
// add extension methods here such as cellForItemAt 
} 
+0

私はすでにRxDatasourceで実装されているデータソースメソッドを追加する必要があります –

0

あなただけのデータソースを結合した後、あなたのデリゲートを設定する必要があります。

collectionView 
    .rx.delegate 
    .setForwardToDelegate(self, retainDelegate: false) 
関連する問題