首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修改重写属性willSet get/set的值

修改重写属性willSet get/set的值
EN

Stack Overflow用户
提问于 2015-09-02 12:43:19
回答 2查看 2.2K关注 0票数 4

我有一个自定义的UILabel,我重写它的文本属性。如果是upperCase = true,那么我需要修改这个属性的值,问题是我要递归地调用setter。

代码语言:javascript
运行
复制
@IBDesignable class CustomLabel: UILabel {
@IBInspectable var upperCase: Bool = false
override var text: String? {
    willSet {
        if upperCase == true {
            text = newValue?.uppercaseString  
        }
    }
}
}

我也试过:

代码语言:javascript
运行
复制
var aux: String?
override var text: String? {
    get { return aux }
    set {  aux = newValue }
}

但是没有设置文本标签。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-02 12:47:11

使用超级

代码语言:javascript
运行
复制
override var text: String? {
    get { return super.text }
    set(v){  super.text = v }
}
票数 6
EN

Stack Overflow用户

发布于 2016-02-12 19:17:29

所选的答案向您展示了如何在设置文本时修改文本,但它并没有具体解决这个问题,该问题询问如何创建一个UILabel子类,它将自动使文本大写。

下面是一个UILabel子类,它总是大写的

代码语言:javascript
运行
复制
import UIKit

class UppercaseLabel: UILabel{

    override var text: String?{
        get{
            return super.text
        }
        set(newText){
            super.text = newText?.uppercaseString
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32353506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档