2017-06-15 55 views
-1

我有一個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) 
} 
+0

你確定你要回你的視圖控制器的原始實例?如果你是那麼你應該不需要做任何事情;該視圖應該與移動到新視圖控制器之前的視圖相同。你能展示你如何「回」嗎? – Paulw11

+0

我認爲這可能是問題。在viewDidLoad我正在運行一個函數,該函數爲tableView提取json數據,並且在它的最後我有DispatchQueue.main.async {self.tableview.reloadData()}。也許每次調用VC時,都會重新載入數據,並將tableview重置爲頂部? 我已經在main.storyboard中設置了後退按鈕,我右鍵單擊拖動並設置第一個VC以「顯示」。 – AceVentura

+0

正如我懷疑你推動你的視圖控制器的新實例,而不是「回來」。搜索有關展開賽段的信息並使用一個。你也應該使用segue來呈現MainVc,而不是直接調用'present' – Paulw11

回答

0

你的問題是,你實際上是移動向前到您的視圖控制器的新實例,而不是到現有的實例。如果你移回來,那麼視圖控制器的狀態就像你離開它一樣,並且不需要對tableview做任何事情。

您應該使用unwind segue搬回

0

當你的電池是響應您的觸摸(和你沒有選擇單元格後調用deselectRow(at indexPath: IndexPath)),該的tableView將讓您選擇(S),所以當你回到你的viewController剛請在viewWillAppear()方法中撥打tableView.indexPathForSelectedRow(or tableView.indexPathsForSelectedRows)

+0

感謝您的回覆,我現在正在處理這個問題。讓我回到你身邊,我會讓你知道它是怎麼回事/如果我有後續問題 – AceVentura

+0

Meonadro,@ Paulw11提到我應該看看最後爲我工作的unwind segues,乾杯 – AceVentura

相關問題