当前位置 : 主页 > 手机开发 > ios >

ios – 如何在Swift中使用变量字符串参数创建UIView的扩展?

来源:互联网 收集:自由互联 发布时间:2021-06-11
参见英文答案 How to have stored properties in Swift, the same way I had on Objective-C?17个 我希望我的所有视图都有一个像标记一样存储的属性,但它必须是String类型.所以我尝试使用扩展程序. 但我得到
参见英文答案 > How to have stored properties in Swift, the same way I had on Objective-C?                                    17个
我希望我的所有视图都有一个像标记一样存储的属性,但它必须是String类型.所以我尝试使用扩展程序.

但我得到错误说扩展我不包含存储的属性.

问题是,如何在我的应用程序中的每个UIView中存储一个字符串,如标签?

谢谢!

您可以使用在目标c运行时中定义的setAssociatedObject和getAssociatedObject来实现此目的.

import ObjectiveC

var AssociatedObjectKey: UInt8 = 7
extension UIView
{
    var myOwnTag: String?
    {
        get
        {
            return getAssociatedObject(self, associativeKey: &AssociatedObjectKey) as? String ?? ""
        }

        set
        {
            var propertyVal : String? = nil
            if let value = newValue
            {
                propertyVal = value
            }
            setAssociatedObject(self, value: propertyVal, associativeKey: &AssociatedObjectKey, policy: objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
    }
}

有关更多详细信息,请参阅此blog.

网友评论