簡體   English   中英

修改覆蓋屬性willSet get / set的值

[英]Modify the value overriding a property willSet get/set

我有一個自定義UILabel ,我覆蓋它的文本屬性。 如果upperCase = true ,我需要修改此屬性的值,問題是我以遞歸方式調用setter。

@IBDesignable class CustomLabel: UILabel {
@IBInspectable var upperCase: Bool = false
override var text: String? {
    willSet {
        if upperCase == true {
            text = newValue?.uppercaseString  
        }
    }
}
}

我也嘗試過:

var aux: String?
override var text: String? {
    get { return aux }
    set {  aux = newValue }
}

但文本標簽未設置。 有什么建議嗎?

用超級

override var text: String? {
    get { return super.text }
    set(v){  super.text = v }
}

所選答案將向您展示如何在設置時修改文本,但它沒有專門解決問題,該問題詢問如何創建將自動使文本為大寫的UILabel子類。

這是一個永遠是大寫的UILabel子類

import UIKit

class UppercaseLabel: UILabel{

    override var text: String?{
        get{
            return super.text
        }
        set(newText){
            super.text = newText?.uppercaseString
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM