我试图创建一个动作,当按钮被按下时,通过将其当前的标题替换为一个属性字符串来下划线。然而,这一直导致 "unrecognized selector sent to instance "错误。我已经将一个IBAction连接到这个按钮上,并创建了一个引用它的IBOutlet弱变量。据我所知,这些应该不会相互干扰。
下面是我连接到按钮的动作的代码。
@IBAction func voButtonTapped(_ sender: Any) {
let voString = "vo"
let attributedvo = NSAttributedString(string: voString, attributes: underlineAttribute)
vButton.setAttributedTitle(attributedvo, for: .normal)
}
这就是下面的错误。
[__SwiftValue set]: 未识别的选择器发送到实例0x600001584510。
underlinedAttribute:
let underlineAttribute: [NSAttributedString.Key: Any] = [
.font: UIFont(name: "Rockwell-Bold", size: 35) as Any,
.foregroundColor: ColorManager.specialYellow,
.underlineStyle: NSUnderlineStyle.single.rawValue]
vButton:
@IBOutlet weak var vButton: UIButton!
ColorManager:
struct ColorManager {
static let specialYellow = Color("Special Yellow")
}
colorManager结构导致了这个问题。
我不得不把它从
static let specialYellow = Color("special yellow")
到
static let specialYellow = UIcolor(red: 0.85, green: 0.68, blue: 0.00, alpha: 1.00)
所以基本上我不能使用我原来保存的颜色,只能从一个十六进制调色板中找到一个类似的颜色,然后我使用一个在线转换器将其转换为UIcolor。