我试图在类的扩展名上声明IBOutlet
属性。但它给出了错误
不允许使用getter / setter方法的'var'声明
class ExampleView : UIView
{
}
extension ExampleView
{
@IBOutlet var btn1, btn2 : UIButton // here I got error.
}
请有人建议我这样做吗?
答案 0 :(得分:9)
来自Extensions
- > Computed Properties
The Swift Programming Language
请注意
扩展可以添加新的计算属性,但它们无法添加存储 属性,或将属性观察者添加到现有属性。
回应twlkyao的评论:这是我对absoluteValue
的{{1}}属性的实现
Double
答案 1 :(得分:2)
来自The Swift Programming Language:
Swift中的扩展程序可以:
- 添加计算属性和计算的静态属性
- 定义实例方法和类型方法
- 提供新的初始化程序
- 定义下标
- 定义并使用新的嵌套类型
这意味着您无法添加IBOutlet和其他存储的属性。 如果你真的想作弊,你可以创建全局变量或簿记对象,这将允许你查询这些变量或对象,以便添加这些属性(并使它们成为计算属性)。
但它似乎违背了最佳做法。如果没有别的办法,我只会这样做。