iOS Swift UITableView 和 UICollectionView 默認(rèn)選中

只適用于單選情況

一. UITableView

1.設(shè)置默認(rèn)選中

// index 為默認(rèn)選中的row
self.tableView.selectRow(at: IndexPath(row: index, section: 0), animated: false, scrollPosition: .none)

2. 設(shè)置選中狀態(tài)并取消選中狀態(tài)

在自定義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.設(shè)置默認(rèn)選中

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

2. 設(shè)置選中狀態(tài)并取消選中狀態(tài)

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

在自定義cell 中重寫 isSelected 屬性, 新增自定義屬性 isSelect 默認(rèn)為 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)
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容