J'essaye de mettre deux CollectionViews dans un Viewcontroller. J'ai essayé beaucoup de solutions, mais chaque fois que les données montrent seulement dans le premier CollectionsView. Les données que je veux mettre dans les deux CollectionView sont les mêmes.Deux CollectionViews dans un Viewcontroller
Comment puis-je faire
Mon code
import UIKit
import Firebase
import MobileCoreServices
import AVKit
private let reuseIdentifier = "Cell"
var databaseRefRoom: FIRDatabaseReference {
return FIRDatabase.database().reference()
}
class RoomViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UITableViewDelegate {
//ScrollView
@IBOutlet weak var favoritesBtn: UIButton!
@IBOutlet weak var yourChatBtn: UIButton!
@IBOutlet weak var mostPopularBtn: UIButton!
//RoomCollectionView -> RoomViewCollectionViewCell
var rooms = [Room]()
@IBOutlet weak var collectionView: UICollectionView!
//RoomViewController material
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Chuloo"
self.navigationController?.isNavigationBarHidden = false
favoritesBtn.setTitle("Favorites", for:.normal)
favoritesBtn.titleLabel?.textColor = UIColor.white
favoritesBtn.titleLabel?.font = UIFont(name: "AppleSDGothicNeo-Bold", size: 14)
favoritesBtn.backgroundColor = UIColor.orange
yourChatBtn.setTitle("Your Chat", for:.normal)
yourChatBtn.titleLabel?.textColor = UIColor.white
yourChatBtn.titleLabel?.font = UIFont(name: "AppleSDGothicNeo-Bold", size: 14)
yourChatBtn.backgroundColor = UIColor.red
mostPopularBtn.setTitle("Most Popular", for:.normal)
mostPopularBtn.titleLabel?.textColor = UIColor.white
mostPopularBtn.titleLabel?.font = UIFont(name: "AppleSDGothicNeo-Bold", size: 14)
mostPopularBtn.backgroundColor = UIColor.blue
//RoomCollectionView -> Display CollectionView i ScrollView -> Extension
collectionView.dataSource = self
collectionView.delegate = self
let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "dd.MMMM.yyyy - hh:mm:ss a"
formatter.amSymbol = "AM"
formatter.pmSymbol = "PM"
let result = formatter.string(from: date)
//Hide backButton
self.navigationItem.setHidesBackButton(true, animated: false)
//RoomCollectionView -> DataService fetch from Server
DataService.dataService.fetchDataFromServer { (room) in
self.rooms.append(room)
let indexPath = IndexPath(item: self.rooms.count - 1, section: 0)
self.collectionView?.insertItems(at: [indexPath])
}
//Online User Status
let usersRef = databaseRefRoom.child("online")
let currentUserRef = usersRef.child((FIRAuth.auth()?.currentUser?.displayName)!)
currentUserRef.setValue("online")
currentUserRef.onDisconnectRemoveValue()
//Database User child Online Status
let usersRefUser = databaseRefRoom.child("users").child((FIRAuth.auth()?.currentUser?.displayName)!).child("Online Status").child("online")
usersRefUser.setValue(result)
let usersRefOffline = databaseRefRoom.child("users").child((FIRAuth.auth()?.currentUser?.displayName)!).child("Online Status")
usersRefOffline.onDisconnectUpdateChildValues(["offline": result])
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
//RoomCollectionView -> Display
extension RoomViewController {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return rooms.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "roomCell", for: indexPath) as! RoomViewCollectionViewCell
let room = rooms[indexPath.row]
cell.layer.cornerRadius = 4
cell.layer.borderColor = UIColor(red: 248.0/255.0, green: 248.0/255.0, blue: 248.0/255.0, alpha: 1.0).cgColor
cell.layer.borderWidth = 1
cell.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25).cgColor
cell.layer.shadowOffset = CGSize(width: 0, height: 2)
cell.layer.shadowOpacity = 0.5
cell.layer.shadowRadius = 1.0
cell.layer.masksToBounds = false
// Configure the cell
cell.configureCell(room: room)
return cell
}
func collectionView(collectionView: UICollectionView, layout: UICollectionViewLayout, sizeForItemAt: IndexPath) -> CGSize {
return CGSize(width: view.frame.width/2 - 5, height: view.frame.width/2 - 5)
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
}
}
Vous ne faites qu'une seule collectionVoir en tant que 'IBOutlet', qu'en est-il du second? il devrait également être connecté au contrôleur de vue en tant que 'IBOutlet' ... –
Votre code n'affiche pas deux vues de collection. – David
J'ai effacé la deuxième collectionVoir dans le code ci-dessus, parce que j'ai besoin d'aide pour mettre en œuvre la seconde –