collectionviewcell 中未显示按钮 swift

buttons not showing in collectionviewcell swift

我正在尝试与嵌入在 collectionviewcell 中的按钮进行交互。但它没有显示,我不确定我的代码有什么问题。

class Classic: UIViewController, UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        return 1
    }
    

   @IBOutlet var collectionView: UICollectionView!
   override func viewDidLoad()
     {
        // Register your cell
        let nib = UINib(nibName: "Subclass", bundle: nil)
        collectionView?.register(nib, forCellWithReuseIdentifier: "cell1")
   
     }
    
    // Collection view data source method
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
     
    // get your cell
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell1", for: indexPath) as! Subclass

      // here you will have access to your button
     cell.buttonOne.setTitle("2", for: .normal)
       
     // To handle tap on button
     cell.buttonOne.tag = indexPath.row
     cell.buttonOne.addTarget(self, action: #selector(didTapButton(sender:)), for: .touchUpInside)

    return cell
}

    @objc func didTapButton(sender: UIButton) {
        print("button tapped at index:-", sender.tag)
    }
     
}


class Subclass: UICollectionViewCell{
    @IBOutlet weak var buttonOne: UIButton!
    
}

这是我的故事板

如图所示,我在左下方的单元格中放置了一个按钮,单元格标识符为“cell1”。

但是,在模拟器中

可能是您没有为 viewController 设置委托和数据源。

将数据源和委托分配给 viewController,或者在 IB 中从 collectionView 数据源拖动到 viewController,与委托相同,或者在 viewDidLoad 中分配: collectionView.delegate = 自己 collectionView.dataSource = 自己

别忘了添加到您的 viewController 中,看起来像 :

class viewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource 

action 语法错误。

addTarget(_:action:for:)改为

cell.buttonOne.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)

和对应的方法

@objc func didTapButton(_ sender: UIButton) {