【问题标题】:UITableView reselects row when scrollingUITableView 滚动时重新选择行
【发布时间】:2020-12-13 19:42:19
【问题描述】:

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

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

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)
        }
    }
    
}

在屏幕录制中,您可以看到单元格已正确取消选择。但是,如果我滚动,则会再次选择单元格。任何想法为什么?

【问题讨论】:

    标签: ios swift uitableview modalviewcontroller


    【解决方案1】:

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

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

    【讨论】:

    • 那么,tableViewCell.setSelected(:)、tableViewCell.isSelected = false和tableView.deselectRow(at:)之间有什么区别?
    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多