多个按钮未出现在UICollectionViewCell中

时间:2017-07-11 02:51:19

标签: ios swift uibutton uicollectionview uicollectionviewcell

我试图以编程方式在UICollectionView的每个单元格中创建一个按钮;但是,只有第一个按钮可见。我已经尝试添加print语句来查看我的单元格有哪些子视图,并且按钮存在但是它没有出现在屏幕上。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCell", for: indexPath)
    // Configure the cell

    let button = UIButton(frame: cell.frame)
    button.addTarget(self, action: #selector(cellClicked), for: UIControlEvents.touchUpInside)
    button.backgroundColor = UIColor.red
    button.tag = indexPath.row
    cell.addSubview(button)

    print(cell.subviews)

    return cell
}

另外,我在点击按钮时添加了一个print语句,只显示第一个按钮并输出0。

@IBAction func cellClicked(sender: UIButton) {
    print(sender.tag)
}

Here is a screenshot of the collection view, there should be two buttons in the picture but only one appears

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在数据源中添加按钮非常糟糕,因为当重复使用单元格时,将创建新按钮。如果您使用的是Interface Builder,请直接添加按钮。你可以调整他们的属性。您还可以定义自定义单元格,然后按CTRL拖动插座。或者在集合视图的委托中处理选择。

optional public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

另一个解决方案是在单元格的awakeFromNib()中添加按钮,这只会被调用一次。