gpt4 book ai didi

swift - 无论如何,表格 View 单元格都会保持突出显示

转载 作者:搜寻专家 更新时间:2023-11-01 05:53:16 24 4
gpt4 key购买 nike

当用户点击其中一个表格 View 单元格时,我基于 Storyboard的 UITableViewController 子类将另一个 View Controller 推送到导航中。

我正在使用 segue 来完成此操作,以编程方式使用 pushViewController(:animated:).

问题 我遇到的是我的 TableView 单元格一直保持突出显示(浅灰色),即使在弹出 View Controller 之后(同样,使用“展开”segue)也是如此。清除它的唯一方法是调用 tableView.reloadData()


我试过:

  1. 设置:

    self.clearsSelectionOnViewWillAppear = true

    viewDidLoad() 中(应该不是必需的,因为它已经是默认值:模板代码已将 self.clearsSelectionOnViewWillAppear = false 注释掉,并建议取消注释覆盖默认功能)。

  2. 还有:

    override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    if let indexPath = tableView.indexPathForSelectedRow {
    tableView.deselectRow(at: indexPath, animated: true)
    }
    }

    ...无济于事。

    编辑: 结果是 viewDidAppear() 不会 在导航弹出窗口上调用,只有在添加到 View 层次结构之后(例如,添加 subview ())。将这段代码放在 viewWillAppear()可以达到目的。但我在这篇文章末尾的问题仍然存在。

  3. 我也试过实现这个方法:

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

    ...但它没有被调用(可能是因为 segue?)

唯一成功取消突出显示单元格的方法是调用:

tableView.deselectRow(at: indexPath, animated: true)

...从 prepareForSegue() 中。但这发生在 push 上,我想在 pop 上取消突出显示我的单元格。

我是否需要为推送(cell tap)segue 设置一个专用的展开方法,并在那里取消突出显示?

为什么它不能开箱即用,即使我是 UITableViewController 的子类?

最佳答案

就像你提到的那样,使用 tableView.deselectRow(at: indexPath, animated: true)

但是,与其将其放入:

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

你应该把它放在:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// You other cell selected functions here ...
// then add the below at the end of it.
tableView.deselectRow(at: indexPath, animated: true)
}

didDeselectRowAt 在取消选择行之前不会被调用。因此,为了取消选择单元格,您应该将其添加到 didSelectRow 中。 This way whenever a cell is selected and didSelectRow get trigger, you will run your other code and also de-select the cell at the end of it.

关于swift - 无论如何,表格 View 单元格都会保持突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929062/

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