gpt4 book ai didi

swift - 自定义表格单元格: label changed by does not display

转载 作者:行者123 更新时间:2023-11-30 12:02:04 27 4
gpt4 key购买 nike

我在自定义单元格的初始 View 方面遇到问题。 cellForRowAt indexPath: 似乎可以工作,但其中一个标签没有更改。

代码非常简单。请注意下面的打印语句和输出。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "taskCell", for: indexPath) as! SelectGroupCell

var grData: (Desc: String, Sel: Bool) = (Desc: "", Sel: false)
if indexPath.section == 0 {
grData = groupTable[EKEntityType.event]![indexPath.row]
} else {
grData = groupTable[EKEntityType.reminder]![indexPath.row]
}

cell.loadCell(Desc: grData.Desc, Sel: grData.Sel)

print ("\(cell.lblSelected.text) : \(cell.lblDescription.text)")

return cell
}

打印输出:

Optional("O") : Optional("US Holidays") 
Optional("+") : Optional("Calendar")
Optional("O") : Optional("Birthdays")
Optional("+") : Optional("New List Test")
Optional("O") : Optional("Reminders")

模拟器屏幕打印: Notice the labels before the description are wrong.

自定义单元格函数:

func loadCell(Desc: String, Sel: Bool) {
lblDescription.text = Desc

if Sel {
lblSelected.text = "+"
} else {
lblSelected.text = "O"
}

}

重新运行并在 loadCell 中打印

loadCell: O : US Holidays
display cell: O : US Holidays
loadCell: + : Calendar
display cell: + : Calendar
loadCell: O : Birthdays
display cell: O : Birthdays
loadCell: + : Reminders
display cell: + : Reminders
loadCell: O : New List Test
display cell: O : New List Test

我很困惑。

最佳答案

我明白了,但不明白为什么。

我删除了单元逻辑中的SetSelect函数:

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if selected {
lblSelected.text = "+"
} else {
lblSelected.text = "O"
}

}

然后我更改了表逻辑中的didSelectRow并重新加载了表。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

if indexPath.section == 0 {
groupTable[EKEntityType.event]![indexPath.row].Sel = true
} else {
groupTable[EKEntityType.reminder]![indexPath.row].Sel = true
}

tableView.reloadData()

}

然后 cell.LoadCell 逻辑起作用:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "taskCell", for: indexPath) as! SelectGroupCell

var grData: (Desc: String, Sel: Bool) = (Desc: "", Sel: false)
if indexPath.section == 0 {
grData = groupTable[EKEntityType.event]![indexPath.row]
} else {
grData = groupTable[EKEntityType.reminder]![indexPath.row]
}

cell.loadCell(Desc: grData.Desc, Sel: grData.Sel)

return cell
}

关于swift - 自定义表格单元格: label changed by does not display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47094005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com