【发布时间】:2015-07-29 14:50:44
【问题描述】:
我的 UIViewController 中有一个 UICollectionview。在滚动集合视图上不重用单元格。你可以看到 numberOfItemsInSection 方法;
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 7
}
这就是 collectionViewLayout 方法;
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if(collectionView == mainCollectionView){
switch(indexPath.row){
case 0:
return CGSize(width: self.view.frame.width, height: self.view.frame.height * 0.20)
case 1:
return CGSize(width: (self.view.frame.width * 0.5) - 3, height: self.view.frame.height * 0.2)
case 2:
return CGSize(width: (self.view.frame.width * 0.5), height: self.view.frame.height * 0.2)
case 3:
return CGSize(width: self.view.frame.width, height: self.view.frame.height * 0.2)
case 4:
return CGSize(width: (self.view.frame.width * 0.6) - 3, height: self.view.frame.height * 0.2)
case 5:
return CGSize(width: (self.view.frame.width * 0.4), height: self.view.frame.height * 0.2)
case 6:
return CGSize(width: (self.view.frame.width), height: self.view.frame.height * 0.2)
default:
return CGSize(width: 0, height: 0)
}
}
}
最后一个是cellForRowAtIndexPath方法:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if(collectionView == mainCollectionView){
var cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MainCollectionViewCell
switch(indexPath.row){
case 0:
cell.imageView.image = UIImage(named: imageArray[indexPath.row])
cell.clockIconImageView.hidden = true
cell.pinIconImageView.hidden = true
cell.placeLabel.hidden = true
cell.lineView.hidden = false
case 1:
cell.imageView.image = UIImage(named: imageArray[indexPath.row])
cell.clockIconImageView.hidden = true
cell.pinIconImageView.hidden = true
cell.placeLabel.hidden = true
cell.lineView.hidden = false
case 2:
cell.imageView.image = UIImage(named: imageArray[indexPath.row])
cell.clockIconImageView.hidden = true
cell.pinIconImageView.hidden = false
cell.placeLabel.hidden = true
cell.lineView.hidden = false
case 3:
cell.imageView.image = UIImage(named: imageArray[indexPath.row])
cell.clockIconImageView.hidden = true
cell.pinIconImageView.hidden = true
cell.placeLabel.hidden = true
case 4:
cell.imageView.image = UIImage(named: imageArray[indexPath.row])
cell.clockIconImageView.hidden = true
cell.pinIconImageView.hidden = true
cell.placeLabel.hidden = true
cell.lineView.hidden = false
case 5:
cell.imageView.image = UIImage(named: imageArray[indexPath.row])
cell.clockIconImageView.hidden = true
cell.pinIconImageView.hidden = false
cell.placeLabel.hidden = true
cell.lineView.hidden = false
case 6:
cell.imageView.image = UIImage(named: imageArray[indexPath.row])
cell.clockIconImageView.hidden = true
cell.pinIconImageView.hidden = true
cell.placeLabel.hidden = true
cell.lineView.hidden = false
default:
break
}
return cell
}
你还可以看到输出:
我已经为 case6 机器人添加了一个断点,它没有进入那个案例。任何帮助都会很棒。
【问题讨论】:
-
如果有 7 个单元格,则更改开关条件,然后使用此开关((indexPath.row)% 7)
-
也许第 7 项超出了屏幕的范围,也许您需要滚动一下 UICollectionView 才能加载该视图?
-
我正在滚动底部以调用 cellForItemAtIndexPath 方法,但它没有重用单元格。