J'ai un tableau de NSObjects que j'ai besoin de lire dans un autre viewcontroller. Cependant, je ne sais pas quel niveau je devrais mettre les données pour cela. Cette capture d'écran ci-dessous explique mieux ce que j'essaie de faire. Chaque HomeController possède un titre, une liste de membres, une description et un encart collection (barre jaune). J'ai besoin des vues de collection nombre de cellules pour égaler le nombre de membres. Accès à un tableau dans un autre contrôleur de vue
J'ai essayé de créer une référence à HomeController à l'intérieur du CollectionView encart en utilisant var paresseux, mais qui a obtenu l'erreur: fatal error: Index out of range
lazy var homeController: HomeController = {
let hc = HomeController()
hc.liveCell = self
return hc
}()
Encore une fois cela se fait à l'intérieur du CollectionView encart
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath :
IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: profileImageCellId, for: indexPath) as! profileImageCell
let room = homeController.rooms[indexPath.row]
print(room.members?.count)
return cell
}
Des suggestions?
EDIT
Les données sont ajoutées au tableau en utilisant cette fonction
var rooms = [Room]()
func fetchAllRooms(){
Database.database().reference().child("rooms").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let room = Room()
room.rid = snapshot.key
room.setValuesForKeys(dictionary)
self.rooms.append(room)
print(snapshot)
DispatchQueue.main.async(execute: {
self.collectionView?.reloadData()
})
}
print("end of room snap")
}, withCancel: nil)
}
Voici la cellule pour l'élément à chemin d'index au niveau HomeController
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
var cell = UICollectionViewCell()
let section = indexPath.section
let liveCell = collectionView.dequeueReusableCell(withReuseIdentifier: LiveCellId, for: indexPath) as! LiveCell
let cell = liveCell
let room = rooms[indexPath.row]
liveCell.liveStreamNameLabel.text = room.groupChatName
liveCell.descriptionLabel.text = room.groupChatDescription
return cell
}
' Laissez hc = HomeController() 'crée une nouvelle instance d'un HomeController. Peut-être que ce n'est pas ce que tu visais? Il ne vous donnera pas l'objet HomeController actuel. Donc, cela dépend vraiment de la façon dont vous créez le tableau des chambres. – ryantxr
@ryantxr qui a du sens. C'est probablement pourquoi j'ai eu l'erreur hors de l'index. Je vous remercie. – Stefan