首页 文章

打开TableView到最后单击的单元格

提问于
浏览
-1

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

这是代码:

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

2 回答

  • 0

    您的问题是您实际上正在转向视图控制器的新实例,而不是返回现有实例 . 如果您向后移动,那么视图控制器的状态将与您离开时一样,并且不需要对tableview执行任何操作 .

    您应该使用unwind segue向后移动

  • 0

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

相关问题