默认情况下,如何选择 UICollectionView 的特定索引路径?

Posted

技术标签:

【中文标题】默认情况下,如何选择 UICollectionView 的特定索引路径?【英文标题】:How can I select specific indexpath of a UICollectionView by default? 【发布时间】:2017-02-26 06:54:08 【问题描述】:

我想默认突出显示 UICollectionView 的特定单元格。 但是我不能这样做。代码如下。 UIView(在init方法中):

    let selectedIndexPath = IndexPath(item: 0, section: 0)
    collectionView.selectItem(at: selectedIndexPath, animated: false, scrollPosition: [])

UICollectionViewCell:

override var isSelected: Bool 
    didSet 
        imageView.tintColor = isSelected ? UIColor.white : UIColor.red
    

如何默认选择 UICollectionView 的特定索引路径? 如果您需要任何其他信息来解决它,请告诉我。 谢谢。

【问题讨论】:

你在使用自定义的collectionViewcell吗?即你有一个细胞类 没错,我正在使用 customCollectionViewCell。 您可以使用 `[collectionView reloadItemsAtIndexPaths:indexPaths];` 并且在cellForItemAtIndexPath 中您可以根据所选索引路径进行选择逻辑。 同样实现collectionView委托override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool return true 抱歉,我使用的是“Swift”而不是“Objective-C”。 【参考方案1】:

这只会选择第一个单元格

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
    //add here
    let selectedIndexPath = IndexPath(item: 0, section: 0)
    collectionView.selectItem(at: selectedIndexPath, animated: false, scrollPosition: [])

【讨论】:

【参考方案2】:

你应该重写这个方法

override func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
//you should set needed cells as selected here, or set it to deselected, because it is your responsibility now 
    var shouldSelect = false //or true
    cell.isSelected = shouldSelect

但在这种情况下,您应该跟踪 collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 方法并在选择时重新加载集合。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
    collectionView.reloadData()
//or reload sections 

【讨论】:

我无法执行您的建议。没有“setSelected()”的方法。 你不应该使用reloadItemsAtIndexPaths而不是reloadData吗? 我只添加了func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) let selectedIndexPath = IndexPath(item: 0, section: 0) collectionView.selectItem(at: selectedIndexPath, animated: false, scrollPosition: []) 然后它就可以实现我想要的。感谢您的帮助。

以上是关于默认情况下,如何选择 UICollectionView 的特定索引路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何在默认情况下显示禁用 HTML 选择选项?

如何在不使用库的情况下将默认名称“选择文件”更改为“选择文档”? [复制]

在mui-datatables中默认情况下(当没有数据行时,如何取消选择selectableRows中的复选框?

如何在不关闭菜单的情况下选择菜单项?

如何在默认情况下停止 datetimepicker 在文本框中设置今天的日期 onclick

如何在没有参数的情况下快速将类保存到用户默认值