gpt4 book ai didi

ios - 如何在 ViewWillAppear 中向自定义 UITableViewCell 添加边框

转载 作者:行者123 更新时间:2023-11-29 05:24:32 24 4
gpt4 key购买 nike

我有 2 个带有自定义表格 View 单元格的表格 View ,其中在第一个表格 View 中选择一个单元格会转到第二个表格 View 。我想要实现的是,当您在第二个 View 中选择一个单元格时,会添加一个红色边框,如果您返回第一个 View 并返回到第二个 View ,该单元格仍然有边框。

在使用自定义表格 View 单元之前,我在 2 个表格 View Controller 上进行了测试,并且代码有效;但是,它不适用于自定义 TableView 单元格。

这是我用于 TableView Controller 的代码(secondCategory 是一个保存所选单元格索引路径的类):

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

let cell = tableView.cellForRow(at: indexPath)
cell?.selectionStyle = UITableViewCell.SelectionStyle.none
cell?.layer.borderWidth = 3.0
cell?.layer.borderColor = UIColor.red.cgColor
secondCategory.currentSelection = indexPath

}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)

if secondCategory.currentSelection != nil {
let cell = tableView.cellForRow(at: secondCategory.currentSelection!)
cell!.selectionStyle = UITableViewCell.SelectionStyle.none
cell!.layer.borderWidth = 3.0
cell!.layer.borderColor = UIColor.red.cgColor
}
}

下面是自定义表格 View 单元格的代码(在 viewWillAppear 中,我使用 tableView(tableView: UITableView, cellForRowAt: IndexPath) 因为 tableView.cellForRow(at: IndexPath) 返回 nil):

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

let cell = tableView.cellForRow(at: indexPath)
cell?.selectionStyle = UITableViewCell.SelectionStyle.none
cell?.layer.borderWidth = 3.0
cell?.layer.borderColor = UIColor.red.cgColor
secondCategory.currentSelection = indexPath
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)

if secondCategory.currentSelection != nil {
let currentCell = tableView(secondTable, cellForRowAt: secondCategory.currentSelection!)
currentCell.selectionStyle = UITableViewCell.SelectionStyle.none
currentCell.layer.borderWidth = 3.0
currentCell.layer.borderColor = UIColor.red.cgColor
}
}

有人可以告诉我为什么自定义 TableView 单元格的代码不起作用吗?

最佳答案

尝试将逻辑移至 cellForRowAt

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "IDENTIFIER", for: indexPath) as! CustomTableViewCell

// TODO: Cell logic

// Border logic
if secondCategory.currentSelection != nil {
cell.selectionStyle = UITableViewCell.SelectionStyle.none
cell.layer.borderWidth = 3.0
cell.layer.borderColor = UIColor.red.cgColor
}

return cell
}

关于ios - 如何在 ViewWillAppear 中向自定义 UITableViewCell 添加边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58313174/

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