Swift UICollectionView cellForItemAtIndexPath不正确的设置单元格内容

时间:2016-06-28 03:18:49

标签: swift swift2 uicollectionview uicollectionviewcell

enter image description here

enter image description here

我希望隐藏按钮,只要它的标题等于' str'变量。

我无法添加更多照片,但它会为#34; 7:00"," 12:00"," 17:00&#34做同样的事情;," 22:00"值。 只想要" 2:00"并做了比较。

这是一个(collectionView)cellForItemAtIndexPath错误还是其他什么?我很困惑。请帮忙..

2 个答案:

答案 0 :(得分:1)

cellForItemAtIndexPath中没有错误,隐藏label单元格的你。所以它只是隐藏标签而不是删除单元格。如果您只想显示不等于2:00的值,则需要为此创建一个额外的数组并将其提供给CollectionViewDelegate方法。创建一个全局数组并按此运行。

var array: [Int] = [Int]()
fun populateData() {
    for i in oldArray {
        if i != 2 {
            self.array.append(i)
        }
    }
    collectionView.reloadData()
}

现在在array方法中使用此CollectionViewDelegate对象

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
     return self.array.count
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let hour = array[indexPath.row]
    cell.hourBtn.setTitle("\(hour):00", forState: .Normal)
    //Now there is no need to write code for hiding button
}

希望这会对你有所帮助。

答案 1 :(得分:1)

滚动时会重新使用单元格,因此根据条件设置隐藏的真假。我认为这是你的问题。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let hour = array[indexPath.row]
let str ="2:00"
 if(cell.hourBtn.titleLabel?.text ==str {
   cell.hourBtn.hidden = true
 }
  else {
   cell.hourBtn.hidden = false
  }
}