作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不使用 Storyboard。
我正在尝试向任何未填写/保存值的单元格添加错误标签。我得出结论,我不需要显示此逻辑,问题是在所有/多个 tableView 的单元格中显示多个错误标签。
我创建了这个 viewLabel 以供重用:
struct Label {
static let errorLabel: UILabel = {
let label = UILabel()
label.frame = CGRect(x: 0, y: 0, width: 18, height: 18)
label.text = "!"
label.layer.cornerRadius = label.frame.height / 2
label.backgroundColor = UIColor.red
label.translatesAutoresizingMaskIntoConstraints = false
label.textAlignment = .center
label.textColor = UIColor.white
label.font = UIFont(name: "CircularStd-Black", size: 14)
label.clipsToBounds = true
return label
}()
}
在 cellForRowAt 内部:
// I'm using detailTextLabel
let cell = UITableViewCell(style: .value1, reuseIdentifier: cellId)
cell.addSubview(Label.errorLabel)
// [...] constraints for Label.errorLabel
return cell
基于此示例,我希望在所有单元格上显示一个红色圆圈,但它却显示在最后一个单元格上。为什么?
最佳答案
这里有一些错误:
示例:
cell.contentView.addSubview(myLabel)
更好的重用方法是添加您的标签一次。这可以在界面构建器或 init 或 awakeFromNib 中完成。这样重用会更有效率。
这是您遇到的主要问题:
您一次又一次地添加一个静态标签。
意思:只有最后一个单元格会显示它,因为只有一个标签(:
最好使用一个函数来创建标签(工厂函数)
static func createLabel() -> UILabel {
let label = UILabel()
label.frame = CGRect(x: 0, y: 0, width: 18, height: 18)
label.text = "!"
label.layer.cornerRadius = label.frame.height / 2
label.backgroundColor = UIColor.red
label.translatesAutoresizingMaskIntoConstraints = false
label.textAlignment = .center
label.textColor = UIColor.white
label.font = UIFont(name: "CircularStd-Black", size: 14)
label.clipsToBounds = true
return label
}
关于swift - 如何将 subview 添加到所有 UITable 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54559643/
我是一名优秀的程序员,十分优秀!