自定义 UI 按钮 setTitle(_:for:) 方法不起作用

问题描述 投票:0回答:5

我有一个自定义 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
  }
}

调试代码我得到这个:

所以我不明白为什么按钮在用户界面中不显示标题。有什么关于

awakeFromNib()
的事吗?

ios swift uibutton
5个回答
1
投票

问题解决了。我错过了

super.layoutSubviews()
方法中的
layoutSubviews()


0
投票

您可以在 init 函数内设置值,而不是在

awakeFromNib()
中设置值。例如,您可以
override init(frame: CGRect)

override init(frame: CGRect) {
        super.init(frame: frame)
        self.backgroundColor = .systemRed
        self.setTitleColor(.white, for: .normal)
        self.setTitle("Eliminar", for: .normal)
 }

0
投票

将 Button 的子类更改为 DeleteButton

enter image description here


0
投票

我将“标题”属性从“归属”更改为“普通”。这对我有用。enter image description here


0
投票

在我的例子中,如果按钮类型是系统,那么它就可以工作,不知道为什么:(

UIButton(类型:.system)

在 iOS 17.2 中

© www.soinside.com 2019 - 2024. All rights reserved.