我有一個tableview列表與可點擊的單元格,當點擊一個新的viewcontroller打開。當單擊後退按鈕並調用第一個VC時,tableview將重置到列表頂部。我怎樣才能改變這個,所以當後退按鈕被點擊時,tableview會返回到原始單元格點擊?據我所知,我需要一個tableview.scrollToRow,但我有點迷路在我需要選擇的indexPath(相信我需要保存最後選擇的行,但現在確定如何做到這一點)打開TableView到最後點擊的單元格
下面的代碼:
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)
}
你確定你要回你的視圖控制器的原始實例?如果你是那麼你應該不需要做任何事情;該視圖應該與移動到新視圖控制器之前的視圖相同。你能展示你如何「回」嗎? – Paulw11
我認爲這可能是問題。在viewDidLoad我正在運行一個函數,該函數爲tableView提取json數據,並且在它的最後我有DispatchQueue.main.async {self.tableview.reloadData()}。也許每次調用VC時,都會重新載入數據,並將tableview重置爲頂部? 我已經在main.storyboard中設置了後退按鈕,我右鍵單擊拖動並設置第一個VC以「顯示」。 – AceVentura
正如我懷疑你推動你的視圖控制器的新實例,而不是「回來」。搜索有關展開賽段的信息並使用一個。你也應該使用segue來呈現MainVc,而不是直接調用'present' – Paulw11