陣列我有需要在另一個視圖控制器讀取NSObjects的陣列。不過,我不確定我應該爲其設置數據的級別。訪問在另一個視圖控制器
下面最好該屏幕截圖說明了什麼,我試圖做的。每個HomeController都有一個標題,成員列表,描述和插圖collectionview(黃色欄)。我需要收集視圖的單元數量等於成員的數量。
我試着用慵懶的VAR創建插圖的CollectionView裏面HomeController的參考但得到了錯誤: fatal error: Index out of range
lazy var homeController: HomeController = {
let hc = HomeController()
hc.liveCell = self
return hc
}()
再次,這是從插圖的CollectionView
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
}
內完成
有什麼建議?
編輯
數據使用此功能
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)
}
這裏加入到該陣列用於項目在指數路徑在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
}
'讓hc = HomeController()'創建一個HomeController的新實例。也許這不是你想要的?它不會給你當前的HomeController對象。所以這取決於你如何創建房間數組。 – ryantxr
@ryantxr有道理。這可能是我得到索引超出範圍錯誤的原因。謝謝。 – Stefan