2016-01-09 29 views
9

我發現使用3D Touch的非常簡單的方法 - 在情節提要中檢查「Peek & Pop」。但我正在努力解決一個問題。使用3D Touch與情節提要的偷看和流行

我的UITableView,當用戶觸摸細胞都與我的代碼工作確定:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetail" { 
     print(tableView.indexPathForSelectedRow) 
    } 
} 

所以我根據所選行填補我的詳細控制器數據。但是當我按Peek或Pop方法tableView.indexPathForSelectedRow總是返回零(HM ..我沒有選擇行,我只是預覽,所以indexPath是nil我猜)。我怎麼能得到這個「窺視」單元格indexPath傳遞它繼續?

或故事板的Peek & Pop不能以這種簡單的方式工作,我需要在我的代碼中完全實現peek & pop?

回答

15

可以使用故事板和prepareForSegue完全實現它。您可以通過使用sender對象來完成此操作。

通過假設您已經將故事板中的表格單元格直接創建到下一個視圖控制器,那麼發件人對象的類型將是UITableViewCell。如果以編程方式觸發segue,則只需記住在方法調用中設置sender對象。

您可以使用此單元格從tableView得到NSIndexPath的舉行,類似下面的東西(忽略所有的力量展開,這只是用於演示目的):

override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) { 
    let cell = sender as! UITableViewCell 
    let indexPath = tableView.indexPath(for: cell)! 
    if segue.identifier == "mySegue" { 
     let destination = segue.destination as! DetailsViewController 
     destination.model = self.model[indexPath.row] 
    } 
}