2つの配列があります.1つはフォトポスト配列で、もう1つはvideoPost配列です。今度は、これらの配列を同時に1つのコレクションビューに表示することは可能ですか?私は以下の方法を使用しようとしましたがうまくいきません。私はそれを正しくやっているのかどうかはわかりません。大いに助けていただければ幸いです。事前のおかげでコレクションビューに2つの配列を追加します
var photoPosts = [photoPost]()
var videoPosts = [videoPost]()
func retrieveData(){
let ref = Database.database().reference().child("videoPost").child(uid)
ref.observe(.childAdded, with: { (snapshot) in
let dictionary = videoPost(snapshot: snapshot)
self.videoPosts.append(dictionary)
})
let ref = Database.database().reference().child(“photoPost").child(uid)
ref.observe(.childAdded, with: { (snapshot) in
let dictionary = photoPost(snapshot: snapshot)
self. photoPosts.append(dictionary)
})
self.newsfeedCollectionView?.reloadData()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return videoPosts.count + photoPosts.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! newsfeedCollectionViewCell
cell. photoPost = photoPosts[indexPath.item]
cell.videoPost = videoPosts[indexPath.item] // fatal error:index out of range
return cell
}
を試してみてください単一の配列を持っており、それに写真やビデオを追加することです。今は2つの配列で、numberOfItemsInSectionの配列数とcellForItemの配列数の両方を返しています。indexPath.itemで値を取得しようとしています。 – Gyanendra
私は両方のアレイを1つのアレイに入れてみましたが、正しく動作しませんでした。たとえば、カウントはphotoPostとvideoPostのオブジェクトの合計ですが、photoPosts @Gyanendraのオブジェクトのみを表示します –