【发布时间】:2021-07-13 05:23:42
【问题描述】:
我有一个自定义 UI Button 子类,当我调用 setTitle(_:for:) 方法时,标题没有改变,按钮显示“Button”标题。我在awakeFromNib()中调用了这个方法。
这是我的自定义按钮代码
class DeleteButton: UIButton {
override func awakeFromNib() {
self.backgroundColor = .systemRed
self.setTitleColor(.white, for: .normal)
self.setTitle("Eliminar", for: .normal)
}
override func layoutSubviews() {
self.layer.cornerRadius = self.frame.height/2
}
}
调试我得到的代码:
所以我不明白为什么按钮不在 UI 中显示标题。 awakeFromNib() 有事吗?
【问题讨论】:
-
你是如何初始化你的按钮的?不确定您的标签和按钮之间的关系。
-
@LeoDabus 通过情节提要。 self.titleLabel 是按钮标题标签。我不明白为什么
self.titleLabel.text返回“按钮”但self.title(for: .normal)返回正确的标题。 -
您还设置了另外两个东西 - backgroundColor 和 titleColor。由于您使用的是故事板,如果您在此处将此按钮设置为 systemBlue 会发生什么?它是蓝色的还是红色的? (消除事物的最简单方法。)
-
titleLabel.text 表示该标签文本的当前值是多少。但是 UIButtons 有状态,并且您为这些不同的状态配置标题,这意味着当按钮更改状态时,它会更改其自己标签中的文本。那还没有发生