ios - 为什么tableview的setSelected(_ :animated:) and setHighlighted(_:animated:) method called on init/load?

标签 ios swift uitableview

有人可以向我解释为什么这些方法 setSelected(_:animated:) setHighlighted(_:animated:)在初始化/加载 TableView 时调用?

我本以为只有在我实际突出显示/选择一个单元格时才会调用这些方法...

我在具有三个动态自定义单元格的 TableViewController 中对此进行了测试,我只是在方法调用中打印出一些文本:

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
    print("setSelected()")
}

override func setHighlighted(_ highlighted: Bool, animated: Bool) {
    print("setHighlighted()")
}

控制台输出:

setSelected()
setHighlighted()
setSelected()
setHighlighted()
setSelected()
setHighlighted()

最佳答案

setSelected(_:animated:)setHighlighted(_:animated:) 每次启动 TableView 中的单元格时都会被调用。因为 setSelected 方法用于设置单元格是否被选中时的 isSelected 属性。默认情况下,每个单元格都被选中 false。要设置 selected = false,调用此方法。

setHighlighted 在每次启动单元格时调用。因为每个单元格都是在 isHighLighted 属性设置为 false 的情况下启动的。要设置此值,默认情况下会调用此方法。是否手动设置 true 或 false。

关于ios - 为什么tableview的setSelected(_ :animated:) and setHighlighted(_:animated:) method called on init/load?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57474274/

相关文章:

ios - 具有多个项目的工作区还是具有多个目标的一个项目?

swift - 如何将枚举大小写传递到使用 'if case' 检查属性大小写的函数中

ios - 根据 segue 重定向到不同的 ViewControllers

iphone - ios UITableView删除/重新排列编辑模式但不显示删除图标

ios - 我的手势识别器附加到错误的 View

ios - UITableViewCell 将消失

ios - 撤销内部分发证书是否会影响当前分发的应用程序?

ios - 推送通知不适用于 iOS 10

macos - 提交到 Mac 应用商店时出现收据验证错误

ios - 如何在 iOS 的 UITableViewCell 中播放视频(自动播放)