在 PreparetoSegue 期间检索选定 UICollectionViewCell 的索引路径?

Posted

技术标签:

【中文标题】在 PreparetoSegue 期间检索选定 UICollectionViewCell 的索引路径?【英文标题】:Retrieving indexpath for a selected UICollectionViewCell during PreparetoSegue? 【发布时间】:2017-05-04 17:24:07 【问题描述】:

使用 collectionViewCells 并尝试通过 segue 将数据发送到下一个 ViewController。虽然获取 indexPath 并不像在 tableViewCell 中那样简单,但我可以做这样的事情来获取它,但是我仍然收到“在展开可选值时意外发现 nil”错误。

代码如下:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 

    if let cell = sender as? MainCollectionViewCell 
    if let indexPath = self.collectionview.indexPath(for: cell) 
        // use indexPath
    print(indexPath.row)
    let destvc: H1ViewController = segue.destination as! H1ViewController
  destvc.backgroundimg.image = UIImage(named: magazines[indexPath.row].image)

        
    


我正在打印 indexpath.row 并获取值。所以我确信就它而言我很好。我正在使用 if let 来确保我没有强行展开。这里有什么问题?

【问题讨论】:

对于 segue.destination 为! H1ViewController 做一个 if let,这样你就可以看到它是正确的类型。也尝试使用调试器。 另外,这发生在运行时并且肯定不是编译器错误,所以我建议删除该标签。 @Gerriet 刚刚尝试在该行也使用 if let 。还是什么都没有! 嗯,错误说nil是什么值? @O.Naeem,哪个是unexpectedly found nil while unwrapping an Optional value?添加您的错误日志 【参考方案1】:

解开了这个谜团。我在目标视图控制器中创建了一个字符串变量,并通过 segue 将图像的字符串名称发送到该变量。然后,在目标视图控制器的 ViewDidLoad 方法中,使用该字符串值来获取 imageviews IBOutlets 上的图像。

【讨论】:

以上是关于在 PreparetoSegue 期间检索选定 UICollectionViewCell 的索引路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何检索选定的选项值?

检索选定的节点不显示

如何在 C# 中使用正则表达式检索选定的文本?

FabricJS动画:鼠标:向上和:向下期间画布上的选定对象

从 gridsearchCV 中的 RFECV 检索选定的特征

从 Excel 的下拉列表中检索选定的值(在 C# 中创建)