使用3D Touch与故事板的偷看和流行

时间:2016-01-09 13:43:08

标签: swift uitableview 3dtouch

我发现使用3D Touch非常简单 - 在故事板中查看“Peek& Pop”。但我正在努力解决一个问题。

我有UITableView,当用户触摸单元格时,我的代码正常工作:

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

所以我在基于所选行的详细控制器中填充数据。但是当我用Peek或Pop方法按tableView.indexPathForSelectedRow总是返回nil(hm ..我没有选择行,我只是预览所以indexPath是nil我想)。如何将“peeked”单元格indexPath传递给segue?

或故事板的Peek& Pop没有以这种简单的方式工作,我需要全面实现peek& amp;弹出我的代码?

1 个答案:

答案 0 :(得分:21)

可以使用故事板和prepareForSegue完全实现它。您可以通过使用sender对象来完成此操作。

假设您已直接从故事板中的表格单元格创建segue到下一个视图控制器,则发件人对象将为UITableViewCell类型。如果以编程方式触发segue,则只需记住在方法调用中设置sender对象。

您可以使用此单元格来获取NSIndexPath中的tableView,类似于以下内容(忽略所有强制解包,这仅用于演示目的):

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]
    }
}