gpt4 book ai didi

swift - 在呈现之前设置 UITableViewCell 选择

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

我有一个 UITableViewCell,我想在呈现 UIViewController 时将其显示为选中状态。 vc.tableView.selectRow:atIndexPath 理论上很好,但它绕过了对单元格上的 willSelectdidSelect 的调用。

单元格有一个暴露的 UIImageView,可以 setSelected 切换,这就是我试图在初始加载时显示的内容。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

我将向您提供一个示例,说明如何更改单元格的背景颜色并选择初始颜色,以便您可以按照并输入所需的代码:

在您的 UIViewController 子类中,实现这些方法,以便您可以将逻辑用于选定和取消选定状态:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedCell = tableView.cellForRow(at: indexPath)!
selectedCell.backgroundColor = UIColor.purple
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let deselectedCell = tableView.cellForRow(at: indexPath)!
deselectedCell.backgroundColor = UIColor.clear
}

在您的自定义 UITableViewCell 子类中,您必须重写 isSelected 属性,这是避免使用 tableView.selectRow:atIndexPath 方法的关键绕过didSelect:

class CustomTableViewCell: UITableViewCell {

override var isSelected: Bool {
didSet {
print(isSelected.description)
self.selectionStyle = .none
if isSelected{
self.backgroundColor = UIColor.purple
} else {
self.backgroundColor = UIColor.clear
}
}
}

}

最后,回到您的UIViewController子类,您可以在viewDidLoad方法中调用selectRow:atIndexPath,例如:

override func viewDidLoad(){
super.viewDidLoad()
tableView.selectRow(at: IndexPath(row: 0, section: 0) , animated: true, scrollPosition: UITableViewScrollPosition.none)
}

关于swift - 在呈现之前设置 UITableViewCell 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644899/

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