UITableView 滚动时重新选择行

UITableView reselects row when scrolling

我有一个带有静态单元格的 tableView。 modalCell(见屏幕截图)有一个 viewController 的 segue,tableViewController 以模态方式呈现。如果我关闭模态视图,单元格将被取消选择。但是,当我将单元格滚动出屏幕并向后滚动以使其再次出现时,该单元格将再次被选中。我在一个新的示例项目中重现了这种行为。

这是我的故事板设置(没什么花哨的):

我在 ViewController 中的代码如下所示:

class ViewController: UITableViewController {
    
    @IBOutlet weak var modalCell: UITableViewCell!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if let cell = tableView.cellForRow(at: indexPath), cell == modalCell {
            modalCell.setSelected(false, animated: true)
        }
    }
    
}

在录屏中,可以看到单元格取消选择正确。但是,如果我滚动,则会再次选择该单元格。有什么想法吗?

只需取消选择 table 视图中的单元格

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
    }