尝试设置类标签属性时获得 nil |UITableView



当我运行此代码时,在解开可选值时,我不断意外地发现 nil。

我正在尝试做的是获取对象数组中的第一个属性,所以我使用 .map 获取第一个属性,即"workoutName">

然后我尝试将 CellData 类中的标签设置为此值,但一直得到它找到 nil。

我感谢我能得到的所有帮助。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var workoutName = workouts.map { $0.workoutName }
let cell = CellData()
cell.workoutNameLabel.text! = workoutName[indexPath.row]
return cell
}

单元格数据类

import UIKit
class CellData: UITableViewCell {
@IBOutlet weak var workoutNameLabel: UILabel!
@IBOutlet weak var numberOfSetsNumberLabel: UILabel!
@IBOutlet weak var numberOfRepsNumberLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}

我会将类变量设置为CellData类并将其设置为awakeFromNib,因为在cellForRow完成之前不会发生awakeFromNib,因此您几乎可以100%确定标签将为nil。 试试这个:

import UIKit
class CellData: UITableViewCell {
//someLableValue string
var labelValueText: String?
@IBOutlet weak var workoutNameLabel: UILabel!
@IBOutlet weak var numberOfSetsNumberLabel: UILabel!
@IBOutlet weak var numberOfRepsNumberLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
workoutNameLabel.text = labelValueText
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}

然后你只需在UITableViewController类的cellForRowMethod中设置变量labelValueText

最新更新