我如何在cellForItemAtIndexPath中使用for循环
这是我的代码,有什么帮助吗?
我想为每个循环返回单元格
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell:CellCollectionView = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CellCollectionView
for Restaurent1 in Resturent.Restaurants
{
var ResturentName = eachRestaurent.name
var ResturentDescrption = eachRestaurent.descrption
var ResturentId = eachRestaurent.id
cell.ResturentsName.text = ResturentName
cell.ResturentsDescrption.text = ResturentDescrption
cell.ResturentsId.text = String(ResturentId as! Int)
}
return cell
}
答案 0 :(得分:5)
不要在cellForItemAtIndexPath
中使用循环。该循环已内置于Cocoa中,它为需要呈现的每个单元调用cellForItemAtIndexPath
实现。
此API遵循" pull"模型,而不是" push"。表格视图"拉动"来自代码的数据,而不是代码"推送"所有数据一次进入API。这种方法的优点是"拉" API不会比需要更多次回拨您。例如,如果只有100个列表中的四个餐馆可见,则您的方法将被调用四次,而不是100次。
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell:CellCollectionView = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CellCollectionView
let r = esturent.Restaurants[indexPath.row]
cell.ResturentsName.text = r.name
cell.ResturentsDescrption.text = r.descrption
cell.ResturentsId.text = String(r.id as! Int)
return cell
}