第一次加载时自动选择项目

时间:2017-10-13 18:22:24

标签: ios swift3 uicollectionview selecteditem didselectrowatindexpath

我正在使用水平的collectinview来显示项目。当用户选择/取消选择我在文本下添加/删除白色边框的项目时。

这是代码

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

    if let cell = collectionView.cellForItem(at: indexPath)  {

        if cell.isSelected {

            bottomLayer.frame = CGRect(x: 0, y: (cell.frame.height) - 7, width: (cell.frame.width), height: 3)
            bottomLayer.backgroundColor = UIColor.white.cgColor
            cell.layer.addSublayer(bottomLayer)
        }
    }
}


func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {

    if collectionView.cellForItem(at: indexPath) != nil {

            bottomLayer.backgroundColor = UIColor.green
    }
}

我想要的是当我加载集合视图时,第一项应该加载bottomLayer(带下划线)

我尝试了代码

let indexPathForFirstRow = IndexPath(row: 0, section: 0)
CollectionView.selectItem(at: indexPathForFirstRow, animated: true, scrollPosition: [])


collectionView(CollectionView, didSelectItemAt: indexPathForFirstRow)

但没有工作。我搜索了很多问题,但大多数都有相同的解决方案,而且我的情况不适用。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

如果你在按钮操作上加载CollectionView,那么

CollectionView.layoutIfNeeded()
let indexPathForFirstRow = IndexPath(row: 0, section: 0)
CollectionView.selectItem(at: indexPathForFirstRow, animated: true, scrollPosition: [])
collectionView(CollectionView, didSelectItemAt: indexPathForFirstRow)

viewDidAppear

中调用它
override func viewDidAppear(_ animated: Bool) {
    let indexPathForFirstRow = IndexPath(row: 0, section: 0)
    CollectionView.selectItem(at: indexPathForFirstRow, animated: true, scrollPosition: [])
    collectionView(CollectionView, didSelectItemAt: indexPathForFirstRow)
}