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)
}
我有一个带有静态单元格的 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)
}