2017-08-04 64 views
0

當用戶從detailViewController返回到UITableView時,我希望tableView返回到以前的位置。從this post找到解決方案,但它不起作用,因爲我沒有保存選定的行。這是我卡住的地方。返回到以前的可用視圖行返回Swift

func scrollToSelectedRow() { 
    let selectedRows = self.tableView.indexPathsForSelectedRows 
    if let selectedRow = selectedRows?[0] as NSIndexPath? { 
     self.tableView.scrollToRow(at: selectedRow as IndexPath, at: .middle, animated: true) 
    } 
} 

scrollToSelectedRow() 
在viewDidAppear

我做保存爲下面的一行到細節發送給DetailViewController

override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? 
{ 

    self.selected = (indexPath as NSIndexPath).row 

    return indexPath 
} 

然而,不知道如何將兩者結合起來進行關聯。

任何幫助表示讚賞

回答

1

問題與您的代碼是這一部分

let selectedRows = self.tableView.indexPathsForSelectedRows 
if let selectedRow = selectedRows?[0] as NSIndexPath? { 
    self.tableView.scrollToRow(at: selectedRow as IndexPath, at: .middle, animated: true) 
} 

如果聲明從未被稱爲

試圖這樣做

聲明這樣

索引路徑
var selected = IndexPath(row: NSNotFound, section: NSNotFound) 

現在didselect類

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 


    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "ChatViewController") 
    self.present(nextViewController, animated:true, completion:nil) 


    self.selected = (indexPath as NSIndexPath) as IndexPath 


}  

調用此函數

func scrollToSelectedRow() { 

     if self.selected.row != NSNotFound 
     { 

     self.tableView.scrollToRow(at: self.selected as IndexPath, at: .middle, animated: true) 

     } 

} 

override func viewWillAppear(_ animated: Bool) { 

    scrollToSelectedRow() 

} 
+0

一個巨大的謝謝你! –

+0

歡迎開心幫忙 –