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) {
我正在尝试与嵌入在 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) {