【问题标题】:Change label value in UICollectionView without reload data?在不重新加载数据的情况下更改 UICollectionView 中的标签值?
【发布时间】:2017-03-31 09:45:17
【问题描述】:

我正在使用 swift 2.2,并且我在单元格中有一个 collectionview,我有一个标签。我想在单击按钮时更改 UICollection 视图中的标签文本值,而不使用重新加载整个 uiCollection 视图。 我不能在我的场景中使用 collectionView.reloadData() 。我想在不使用它的情况下做到这一点。只是为了更新collectionview中特定项目中的一个标签。 有什么帮助吗??

【问题讨论】:

  • 使用reloadobjectatindex概念
  • 你应该使用collectionview的'reloadItemsAtIndexPaths'方法来重新加载collectionview的特定单元格
  • 你的按钮在哪里?在 collectionviewcell 中?
  • 按钮不在单元格中
  • @Anushka Madushan 如果要在选择后管理特定单元格的背景颜色,则可以使用 selectedIndex 变量。您可以将 selectedIndexPath 设置为该变量,并且当您的 uicollecionview 重新加载时,您必须使用该 selectedIndex 变量为该特定单元格提供颜色。

标签: ios swift uicollectionview


【解决方案1】:

如果您传递 IndexPath,您可以访问单元格,然后您可以使用此语法更改标签

let cell = self.collectionView.cellForItem(at: IndexPath) as? yourCollectionViewCellName
cell.label.text = "new text"

【讨论】:

  • @AnushkaMadushan 你能告诉我你在使用这个时发生了什么吗?
  • 我的收藏视图我有标签和图像(图标),并且选定的项目应该显示不同的颜色图标,所以如果我重新加载数据,预选项目也会重新加载。我想要预先选择的项目,并在集合视图中重新加载数据
  • 您需要将单元格转换为collectionview单元格类名,我会更新答案
  • 好的,如果您刷新或滚动集合,您的项目将可重复使用
  • 您需要更新模型中的更改,否则重用数据会回到旧的
【解决方案2】:

你可以这样做:

let indexPath = NSIndexPath(forRow: row, inSection: 0)
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

它不会重新加载您的完整 UICollectionView

【讨论】:

    【解决方案3】:

    斯威夫特 5

    在 swift 5 中,您可以使用以下代码来完成

    let indexPath = IndexPath(row: rowIndexNumber, section: sectionNumber)
     // you can update a bunch of items
    collectionView.reloadItems(at: [indexPath])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 2021-01-10
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多