0
私は、ヘッダーとフッターを持つUIcollectionViewを持っています。ビューデバッガでも空であると表示されますが、ヘッダはアプリケーション上にある静的なイメージで、何かがAPIから取得されておらず、どちらも表示されないため、奇妙です。swift UICollectionViewが空の場合もあるバグの偶数のヘッダを表示する
また、コンソールにはエラーが発生しません。別のビューに行き、reloadData()を強制しますが、何も表示しません。どのように私はこれをよりよくデバッグすることができますか、それが起こらないことを確認しますか?
これは、ビューデバッガがどのように見えるかです:
あなたは、ヘッダーとフッターの空の再利用可能な景色を見ることができます:
編集:
これは補助的な見解がどのようにしてクレアであるかテッド使用RxDataSources
dataSource.supplementaryViewFactory = { (dataSource, collectionView, kind, indexPath) in
switch kind {
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: CellReuseId.contentHeaderCollectionView, for: indexPath) as! ContentHeaderView
headerView.imageView.image = ImageAssets.contentBanner
let tapGestureRecognizer = UITapGestureRecognizer(target:self, action: #selector(self.showListOfEvents(_:)))
headerView.addGestureRecognizer(tapGestureRecognizer)
return headerView
case UICollectionElementKindSectionFooter:
let footerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: CellReuseId.contentFooterCollectionView, for: indexPath) as! ContentFooterView
footerView.setUpObjects()
//setUp Appropiate label or animation
let showFooter: Bool = !(self.centerActivityIndicator?.isAnimating ?? false)
footerView.setUpAppropiateDependingOnResults(isThereMoreResults: self.isThereMoreResults, showFooter: showFooter)
return footerView
default: break
}
//return default
return UICollectionReusableView()
}
そして、これは、APIのモデルを取得し、私は同じUIのレンダリングと同じ問題を抱えていたcollectionView
let results = Observable.of(paginationObserver, offlineObserver).merge()
//calls method that calls DB with the appropiate data
.flatMapLatest { [unowned self] parametersChanged -> Driver<LecturesStateResults> in
//since this is being called again, we make sure to clean out "old cache data" on view model
self.videoObject.lecturesResults.value.removeAll(keepingCapacity: true)
return self.setupLectures().asDriver(onErrorJustReturn: LecturesStateResults.empty)
}
results
//Bind the result observable to the UIcollectionView
//UiCollection view only wants an array not an Observable
.map {
if !$0.results.isEmpty { self.centerActivityIndicator?.stopAnimating()}
return [SectionModel(model: "", items: $0.results)]
}
.bind(to: lectureViewSquare.rx.items(dataSource: dataSource))
.addDisposableTo(disposeBag)
lectureViewSquare.rx.setDelegate(self)
.addDisposableTo(disposeBag)
だったあなたは私たちにいくつかのコードを示してもらえますか? – kikettas
UICollectionViewとUICollectionCellが定義されており、RxSwiftを使用してデータをテーブルにバインドするので、少し複雑です。私もUICollectionViewDelegateFlowLayoutを使用しています – baldemora
ストーリーボードまたはXibを使用していますか?あなたはCollectionViewのdataSourceメソッドをオーバーライドすると思いますか? – kikettas