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

时间:2017-06-15 23:32:05

标签: ios swift tableview didselectrowatindexpath

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

以下是代码:

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 :(得分:0)

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

答案 1 :(得分:0)

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

您应该使用unwind segue向后移动