当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用3DTouch与故事板的偷看和流行》经验,为你挑选了1个好方法。

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

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

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

所以我根据选定的行在我的详细控制器中填充数据.但是当我用Peek或Pop方法按下时tableView.indexPathForSelectedRow总是返回nil(嗯..我没有选择行,我只是预览,所以nil我猜是indexPath ).如何让"peeked"单元格indexPath将其传递给segue?

或者故事板的Peek&Pop没有以这种简单的方式工作,我需要在我的代码中完全实现peek&pop?



1> Kumuluzz..:

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

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

您可以使用此单元格来保存NSIndexPathfrom 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]
    }
}

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有