我正在使用自定义 UICollectionViewCell 类设置 UICollectionView。
使用 UICollectionViewDelegate 中指定的函数,我已经能够在每个单元格中获得一个填充有文本的标签。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "keypadButton", for: indexPath) as! KeypadButtonCollectionViewCell
cell.awakeFromNib()
return cell
}
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
let button = cell as! KeypadButtonCollectionViewCell
//Assigning like this works
button.buttonLabel.text = tempScale[indexPath.row]
}
然而;
我最初用ClassbuttonText
中的一个类变量KeypadButtonCollectionViewCell
(如下所示)设置它并在函数中设置该变量willDisplay
(也在下面)
class KeypadButtonCollectionViewCell: UICollectionViewCell {
var buttonLabel: UILabel!
var buttonText: String!
override func awakeFromNib() {
buttonLabel = UILabel.init(frame: contentView.frame)
buttonLabel.font = UIFont.init(name: "HelveticaNeue-Ultralight", size: 20)
buttonLabel.textColor = UIColor.black
buttonLabel.textAlignment = NSTextAlignment.center
buttonLabel.text = buttonText //Assigning here didn't work
contentView.layer.borderColor = UIColor.init(red: 37/255, green: 37/255, blue: 37/255, alpha: 1).cgColor
contentView.layer.borderWidth = 4
contentView.addSubview(buttonLabel)
}
}
//---------In the view controller--------
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
let button = cell as! KeypadButtonCollectionViewCell
//Setting class var string here to be set as label.text not working
button.labelText = tempScale[indexPath.row]
}
我在这里误解了什么?为什么它不喜欢在 wakeFromNib() 方法中设置使用分配的类变量来设置标签文本,但是当我直接设置标签文本时它起作用了?
正如一开始提到的,我有一种工作方式,我对学术界感兴趣并更好地理解 OOP 编程。