2016-09-19 19 views
1

私はを使用しています。UIViewControllerにはUICollectionViewが含まれています。私は私のコレクションビューにヘッダを追加しようとしましたが、これはと呼ばれることはありません:RxSwiftとUICollectionViewヘッダー

func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) 

答えて

-1

それはあなたがRxDataSourcesを使用している場合を除き、RxSwiftとは何の関係もありません、それはです。

UICollectionViewを正しく設定していないだけです。とりわけ

  • func numberOfSections(in collectionView: UICollectionView) -> Intを定義して0より大きい値を返すようにしてください。
  • func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSizeを定義して、CGSize(width: 0, height: 0)より大きいサイズを返すようにしてください。
  • nibをお使いの場合は、func register(_ nib: UINib?, forSupplementaryViewOfKind kind: String, withReuseIdentifier identifier: String)に登録してください。プログラムで作成する場合は、func register(_ viewClass: AnyClass?, forSupplementaryViewOfKind elementKind: String, withReuseIdentifier identifier: String)で登録してください。
+0

私はあなたのソリューションを試してみました、それは助けにはなりませんでした。私の前提は、UICollectionViewDataSourceプロトコルで定義されたfunc collectionView(collectionView:UICollectionView、viewForSupplementaryElementOfKind kind:String、atIndexPath indexPath:NSIndexPath)がRxSwiftによって実装されていることです。それ以外に何ができますか?たぶん、私の質問をより多くの情報で更新する必要がありますか? – alexxjk

+0

基本的にすべてのコードを手渡す必要があるので、もっと情報を追加すると助けになるとは思わない。私は 'UICollectionView'チュートリアルをチェックアウトし、それを正確にフォローして、何かがベースとして機能するようにすることをお勧めします。そこから修正してください。 – solidcell

1

同じ問題がありました。それを解決するRxCollectionViewSectionedReloadDataSource

このタイプのデータソースにはヘッダー/フッターがあります。標準の1つRxCollectionViewReactiveArrayDataSourceにはヘッダー/フッターがありません。

RxCocoaの場合でも、UICollectionView+Rx拡張子はRxCollectionViewSectionedReloadDataSourceを例として示しています。

例:

 let dataSource = RxCollectionViewSectionedReloadDataSource<SectionModel<String, Double>>() 

    let items = Observable.just([ 
     SectionModel(model: "First section", items: [ 
      1.0, 
      2.0, 
      3.0 
     ]), 
     SectionModel(model: "Second section", items: [ 
      1.0, 
      2.0, 
      3.0 
     ]), 
     SectionModel(model: "Third section", items: [ 
      1.0, 
      2.0, 
      3.0 
     ]) 
    ]) 

    dataSource.configureCell = { (dataSource, cv, indexPath, element) in 
     let cell = cv.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! NumberCell 
     cell.value?.text = "\(element) @ row \(indexPath.row)" 
     return cell 
    } 

    items 
     .bind(to: collectionView.rx.items(dataSource: dataSource)) 
     .disposed(by: disposeBag) 
+0

ようこそ。あなたの答えを書式化してください、あなたがそれを行う必要がある情報とのリンクはここにありますhttps://meta.stackexchange.com/help/formatting –

関連する問題