集合视图在第一个索引上设置单选按钮图像并选择更改

Posted

技术标签:

【中文标题】集合视图在第一个索引上设置单选按钮图像并选择更改【英文标题】:Collection view set radio button image on first index and on did select change 【发布时间】:2020-01-18 09:18:28 【问题描述】:

我有包含 3 或 4 项数据的集合视图。每个单元都有一个无线电图像。当应用程序第一次加载时,我需要首先索引单选按钮图像以选择 br ,如果它点击任何单元格,则该单元格图像应变为选定的单选图像。上一个应更改为未选择的单选图像。

我已经在我的单元格中为行方法处理了这个:

let isFirstData = (nameData.name == self.nameObjects[0].name) ? true : false
cell.set(dataSource: ["isSelected": isFirstData] as [String: AnyObject])

这里nameData 是我的单个数据,我将其传递给我的单元格用于行方法。我正在设置数据源,它将在我的单元格中处理我的数据源。

所以现在选择了我该如何更改它。?

而且我对我的单元格不满意行方法代码来处理它。

任何帮助都会很棒。

谢谢, 罗希特

【问题讨论】:

参考这个:***.com/questions/47545220/… 【参考方案1】:

你需要在 UICollectionViewCell 类中重写这个方法。

 override func setSelected(_ selected: Bool, animated: Bool) 
        super.setSelected(selected, animated: true)
   if selected
     set selected image
    else 
    set unselected image
  
    

之后你需要在 VC 类中调用 Highlighted 方法 并将所选图像设置为他们的。

【讨论】:

但在第一次加载时如何设置我的第一个数据被选中? 在突出显示的方法中,您需要在 indexPath[0] 处设置图像 UICollectionView 没有 setSelected 方法,土耳其应该重写 isSelected 属性,正如我提到的。 @emrepun 正确 setSelected 用于 tableView。您需要通过 isSelect 和 didSelectItemAt 来处理它。 @emrepun 你能回答这个问题吗? ***.com/q/59776362/1769448【参考方案2】:

这是给你的一个方向,如果你不能实现,请告诉我:

在你的单元格文件中有一个方法,然后覆盖UICollectionViewCellisSelected属性,然后如果isSelected = true,调用你的方法,参数值为true来选择单选按钮图像,如果它是false调用你的方法参数值为 false 以取消选择单选按钮图像并相应地更新 UI。

然后在cellForRowAt 方法或UICollectionViewwillDisplayCellAt 方法中,在第一次使用selectItem(at:animated:scrollPosition:) 方法启动时选择第一项。首次初始化集合视图时,它将显示第一项已选中,然后当您选择另一个单元格时,它将相应地更新所有单元格的 UI,因为您覆盖了 isSelected 属性并在那里调用方法。

如何在显示单元格时选择第一项(也可能有其他方法):

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
    if indexPath.row == 0 
        collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .left)
    

请注意,这将为所有部分选择第一项,如果您的 UICollectionView 中有多个部分,这可能会导致问题

或者,如果您确定您的 collectionView 在加载视图时始终有可用数据,您可以在 viewDidLoad 中执行以下操作:

let indexPath = IndexPath(row: 0, section: 0)
collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .left)

【讨论】:

我是开发新手,无法理解流程,任何代码都有助于学习和理解 如何将第一个单元格设置为默认选中?我无法理解

以上是关于集合视图在第一个索引上设置单选按钮图像并选择更改的主要内容,如果未能解决你的问题,请参考以下文章

单选带图像但隐藏单选按钮并使用图像选择

如何删除表格视图单元格中单选按钮的索引路径?

在 TableView 的自定义单元格中添加单选按钮并且无法访问外部

Tkinter:所有单选按钮都已被选中

选择第一个单选按钮以触发更改事件

单击单选按钮图像应更改