打开 TableView 到上次单击的单元格

Open TableView To Last Clicked Cell

我有一个带有可点击单元格的表格视图列表,当点击其中一个时,会打开一个新的 viewcontroller。单击后退按钮并调用第一个 VC 时,表格视图将重置到列表顶部。如何更改此设置,以便在单击后退按钮时 tableview 返回到单击的原始单元格?据我了解,我需要一个 tableview.scrollToRow,但我在需要 select 的 indexPath 中有点迷路(相信我需要保存最后一个 selected 行,但现在确定该怎么做)

代码如下:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let webVC = UIStoryboard.init(name: "MainVC", bundle: nil).instantiateViewController(withIdentifier: "SecondaryVC") as! WebViewController

    webVC.urlLink = self.listings?[indexPath.row].url

    self.present(webVC, animated: true, completion: nil) }


override func viewWillAppear(_ animated: Bool) {
    tableview.scrollToRow(at: indexPathSelected, at: .middle, animated: false)
}

由于您的单元格会响应您的触摸(并且您在选择单元格后没有调用 deselectRow(at indexPath: IndexPath)),tableView 将保留您的选择,因此当您返回 viewController只需在 viewWillAppear() 方法中调用 tableView.indexPathForSelectedRow(or tableView.indexPathsForSelectedRows)

您的问题是您实际上是将 forward 移动到视图控制器的新实例,而不是 back 到现有实例。如果您向后移动,那么视图控制器的状态将与您离开时的状态相同,并且无需对 tableview 执行任何操作。

你应该使用 unwind segue 向后移动