CollectionViewCell 中的 UIButton "IndexPath doesn't work"
UIButton in CollectionViewCell "IndexPath doesn't work"
我制作了一个简单的应用程序,将 uibutton 添加到 collectionviewcell,但是当我执行操作时发生错误。这是屏幕截图。
Error 1
Error 2
和我的 class 代码:UIbuton {}
import Foundation
import UIKit
class KeypadUIButton: UIButton {
var qIndex : NSIndexPath?
}
我的手机 class 是:
import UIKit
class ConverterCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var keypadButton: KeypadUIButton!
}
错误在:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = padCollectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as! ConverterCollectionViewCell
let index = indexPath.row
// -> cell.keypadButton.qIndex = indexPath as NSIndexPath
return cell
}
我哪里错了。你能帮助我吗 ?
你拿了
qIndex 为? NSIndexPath
你可以作为
qIndex 为?索引路径
它避免了 cellforitem 中不必要的向下转换。
我试过你的代码,它工作正常,请检查你是否对你的按钮进行操作以及自定义 class 按钮的名称
class KeypadUIButton: UIButton {
var qIndex : NSIndexPath?
}
class ConverterCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var keypadButton: KeypadUIButton!
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from
a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController : UICollectionViewDataSource{
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 16
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let identifier : String = "test"
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as! ConverterCollectionViewCell
cell.keypadButton.qIndex = indexPath as NSIndexPath?
cell.keypadButton.setTitle("\(indexPath.row + 1)", for: .normal)
return cell
}
}
哦!我收到了你的错误,你似乎错过了这个:
输入您的 class 名称:KeypadUIButton
此外,您不需要在 swift 中使用 NSIndexPath。只需使用 IndexPath 即可。所以你不需要向下转换它。
我制作了一个简单的应用程序,将 uibutton 添加到 collectionviewcell,但是当我执行操作时发生错误。这是屏幕截图。
Error 1
Error 2
和我的 class 代码:UIbuton {}
import Foundation
import UIKit
class KeypadUIButton: UIButton {
var qIndex : NSIndexPath?
}
我的手机 class 是:
import UIKit
class ConverterCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var keypadButton: KeypadUIButton!
}
错误在:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = padCollectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as! ConverterCollectionViewCell
let index = indexPath.row
// -> cell.keypadButton.qIndex = indexPath as NSIndexPath
return cell
}
我哪里错了。你能帮助我吗 ?
你拿了
qIndex 为? NSIndexPath
你可以作为
qIndex 为?索引路径
它避免了 cellforitem 中不必要的向下转换。
我试过你的代码,它工作正常,请检查你是否对你的按钮进行操作以及自定义 class 按钮的名称
class KeypadUIButton: UIButton {
var qIndex : NSIndexPath?
}
class ConverterCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var keypadButton: KeypadUIButton!
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from
a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController : UICollectionViewDataSource{
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 16
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let identifier : String = "test"
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as! ConverterCollectionViewCell
cell.keypadButton.qIndex = indexPath as NSIndexPath?
cell.keypadButton.setTitle("\(indexPath.row + 1)", for: .normal)
return cell
}
}
哦!我收到了你的错误,你似乎错过了这个:
输入您的 class 名称:KeypadUIButton
此外,您不需要在 swift 中使用 NSIndexPath。只需使用 IndexPath 即可。所以你不需要向下转换它。