美文网首页swift开发技术
iOS Swift UITableView 和 UICollec

iOS Swift UITableView 和 UICollec

作者: DeepMind11 | 来源:发表于2020-12-23 16:52 被阅读0次

只适用于单选情况

一. UITableView

1.设置默认选中

// index 为默认选中的row
self.tableView.selectRow(at: IndexPath(row: index, section: 0), animated: false, scrollPosition: .none)

2. 设置选中状态并取消选中状态

在自定义cell 中重写 setSelected(_ selected: Bool, animated: Bool) 方法

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        if selected {
            self.setSelectStyle()
        } else {
            self.setDeSelectStyle()
        }
    }

    private func setSelectStyle() {
        titleLabel.textColor = UIColor.white
        titleLabel.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
        contentView.backgroundColor = UIColor.blue
    }

    private func setDeSelectStyle() {
        titleLabel.textColor = UIColor.black
        titleLabel.font = UIFont.systemFont(ofSize: 12, weight: .medium)
        contentView.backgroundColor = UIColor.white
    }

二. UICollectionView

1.设置默认选中

// 在 reload 之后调用 selectItem
self.collectionView.reloadData()
self.collectionView.selectItem(at: IndexPath(row: self.selectedIndex, section: 0), animated: false, scrollPosition: .top)

2. 设置选中状态并取消选中状态

UICollectionViewCell 没有像 UITableViewCell的 setSelected(_ selected: Bool, animated: Bool) 方法, 但是有 isSelected 属性

在自定义cell 中重写 isSelected 属性, 新增自定义属性 isSelect 默认为 false

    private var isSelect: Bool = false

    override var isSelected: Bool {
        set {
            self.isSelect = newValue
            if newValue {
                self.setSelectedStyle()
            } else {
                self.setDeSelectedStyle()
            }
        }
        get {
            return self.isSelect
        }
    }

    private func setSelectedStyle() {
        titleLabel.backgroundColor = UIColor(hex: "#00F6FF")
        titleLabel.textColor = .el_000823
        titleLabel.font = UIFont.systemFont(ofSize: 13, weight: .semibold)
    }

    private func setDeSelectedStyle() {
        titleLabel.backgroundColor = .el_EEEEEE
        titleLabel.textColor = .el_666666
        titleLabel.font = UIFont.systemFont(ofSize: 12)
    }

相关文章

网友评论

    本文标题:iOS Swift UITableView 和 UICollec

    本文链接:https://www.haomeiwen.com/subject/cxkunktx.html