【问题标题】:Accessing a CollectionViewCells data when selected选择时访问 CollectionViewCells 数据
【发布时间】:2017-08-18 11:38:15
【问题描述】:

我有一个UICollectionViewCell,我想在点击时访问谁的数据。数据将在另一个视图控制器中使用...例如,当我点击一个朋友时,下一个呈现的视图控制器将是一个包含点击的朋友数据的页面。

这是我的didSelectItemAt IndexPath

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    let layout = UICollectionViewFlowLayout()
    let vc = JoinGroupChatController(collectionViewLayout: layout)
    vc.selectedIndex = indexPath

    let liveCell = LiveCell()
    vc.descriptionLabel = liveCell.descriptionLabel.text

    present(vc, animated: true, completion: nil)
}

本质上这是我想要做的,但是我需要 indexPaths 特定的描述标签而不是默认的 liveCell 标签文本。

我知道我需要在某个地方使用 indexPath,只是不确定在哪里/如何。 有什么建议吗?

【问题讨论】:

  • 你根本不应该得到单元格。您应该从用于填充集合视图的数据模型访问数据。单元格不是您的数据。

标签: ios swift uicollectionviewcell


【解决方案1】:

替换

let liveCell = LiveCell()

let liveCell = collectionView.cellForItem(at: indexPath) as! LiveCell

【讨论】:

  • 不,这不是正确的解决方案。你根本不应该得到细胞。您应该从用于填充集合视图的数据模型访问数据。单元格不是您的数据。
  • 如果可以从指定indexPath的数据源列表中获取数据,那绝对是更好的办法。
  • 这与cellForItemAt 方法中用于配置单元格的代码完全相同。此处应使用相同的逻辑来访问相同的值。
  • @rmaddy 到目前为止,上面的答案很完美,是我所期待的解决方案。呈现的下一个单元格本质上是另一个视图控制器中先前选择的单元格的副本。也许这不是这样做的传统方法?这两种方法有什么明显的优缺点吗?
  • @Stefan 单元格不是您的数据。如果您希望访问您的数据,请从您的数据模型访问您的数据,而不是使用您的数据表示形式填充的视图。想象一下,您的单元格显示日期或数字。您的单元格将包含原始日期/数字的字符串表示形式。因此,试图从单元格中获取数据将是一个糟糕的选择。您将从数据模型中获得原始的实际日期/数字。
猜你喜欢
  • 2012-03-22
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 2012-01-11
相关资源
最近更新 更多