我在collectionView
单元内制作了一个tableView
我注册了所有代表和协议,并且在大多数情况下一切正常
问题在于collectionView
必须根据服务器响应动态生成单元格
我在集合的顶部安装了一个计数器,该计数器显示有多少个单元格(也可以动态更新)
如果在加载屏幕时集合位于视野中,则将加载单元格
如果必须完成收集,则它为空,尽管计数器会指示元素的存在。
我不太明白为什么。下面的代码
代码形式VC:
let realPfotoCell = tableView.dequeueReusableCell(withIdentifier:
"RealPhoto", for: indexPath)
as! RealPhotoCarInfoTableViewCell
realPfotoCell.delegate = self
realPfotoCell.model = self.rPhoto
if(self.rPhoto?.data != nil){
realPfotoCell.RPhotoCount.text = String(self.rPhoto.data!.count)
}
cell = realPfotoCell
cell.selectionStyle = UITableViewCell.SelectionStyle.none
}
来自tableViewCell
的代码:
var model: RealPhoto!
func setCollectionViewDataSourceDelegate(dataSourceDelegate: UICollectionViewDataSource & UICollectionViewDelegate, forRow row: Int) {
MyCollection.delegate = self
MyCollection.dataSource = self
MyCollection.reloadData()
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
MyCollection.reloadData()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if (self.model?.data?.count != nil){
print("Photos here")
print(self.model?.data!.count as Any)
} else {
print("No photos")
}
return self.model?.data?.count ?? 0
}
答案 0 :(得分:0)
请确保在服务器响应到来时调用ReloadData()。
//Server Response
MyCollection.delegate = self
MyCollection.dataSource = self
MyCollection.reloadData()
答案 1 :(得分:0)
已解决
在表格单元格上的第一个创建此功能:
func collectionReloadData(){
DispatchQueue.main.async(execute: {
self.collectionView.reloadData()
})
}
然后从
调用func tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath)-> UITableViewCell {...
realPfotoCell.collectionReloadData()