You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift新手求助:修改按钮标题时遇currentTitle只读属性错误的解决方法

解决Swift中UIButton标题无法修改的问题

嗨,作为Swift新手碰到这个问题太正常啦,我当初刚学的时候也踩过这个坑!咱们先搞明白为啥你之前的方法不行,再给你正确的解决办法~

为什么currentTitle赋值会报错?

你看到的错误提示"currentTitle is a get only property"说得很清楚:currentTitle是只读属性,它的作用只是让你获取按钮当前显示的标题内容,根本不允许直接赋值修改,所以你直接给它赋值肯定会报错啦。

正确修改按钮标题的方法

UIButton的标题是和状态绑定的(比如正常状态、高亮状态、选中状态等),所以官方提供了专门的方法来设置标题:setTitle(_:for:)。

结合你的代码,只需要把原来的赋值语句改成下面这样:

choice1Button.setTitle(storyBrain.firstStory().1, for: .normal)

这里的.normal就是按钮的默认正常状态,如果你需要在其他状态下显示不同标题,替换成对应的状态(比如.highlighted、.selected)就行。

另外要注意,如果storyBrain.firstStory().1返回的是可选类型的String?,你可以用更安全的可选绑定处理:

if let buttonTitle = storyBrain.firstStory().1 {
    choice1Button.setTitle(buttonTitle, for: .normal)
}

关于attributedTitle的正确用法

你提到尝试用attributedTitle时Normal相关选项报错,那是因为你用错了方式。如果想设置富文本标题,同样要用对应的方法setAttributedTitle(_:for:),而不是直接给attributedTitle属性赋值。举个例子:

// 先创建富文本对象
let attributedTitle = NSAttributedString(
    string: storyBrain.firstStory().1,
    attributes: [
        NSAttributedString.Key.foregroundColor: UIColor.red,
        NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 18)
    ]
)
// 给按钮设置富文本标题
choice1Button.setAttributedTitle(attributedTitle, for: .normal)

这样就能正常设置带样式的标题啦~

内容的提问来源于stack exchange,提问作者desertRat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 04:32:42