Swift:var声明没有getter / setter方法不允许在这里
我试图在类的扩展上声明IBOutlet
属性。 但它给错误
没有getter / setter方法的'var'声明不允许在这里
class ExampleView : UIView { } extension ExampleView { @IBOutlet var btn1, btn2 : UIButton // here I got error. }
请任何一个build议我正确的方法来做到这一点?
从Extensions
– > The Swift Programming Language
中The Swift Programming Language
Computed Properties
注意
扩展可以添加新的计算属性,但不能添加存储的属性,或者将属性观察器添加到现有的属性。
除了twlkyao的评论之外:这里是我对Double
的absoluteValue
属性的实现
extension Double { var absoluteValue: Double { if self >= 0 { return self } else { return -self } } } // Simple test -> BOTH println() should get called. var a = -10.0 if (a < 0) { println("Smaller than Zero") } if (a.absoluteValue > 5) { println("Absolute is > 5") }
从Swift编程语言 :
Swift中的扩展可以:
- 添加计算的属性和计算的静态属性
- 定义实例方法和types方法
- 提供新的初始化程序
- 定义下标
- 定义和使用新的嵌套types
这意味着你不能添加IBOutlets和其他存储的属性。 如果你真的想作弊,你可以创build全局variables或一个簿记对象,这将允许你查询这些variables或对象,以添加这些属性(并让它们是计算属性)。
但是这似乎是违背最佳做法的。 我只会做,如果没有其他的方式。
- UIWebView loadHTMLString在iOS5中不起作用
- 这个observeValueForKeyPath有什么问题:ofObject:change:context:implementation?
- 在UIButton标题右侧的图像与imageEdgeInsets和titleEdgeInsetsalignment
- UILabel文本截断与文本中的换行符
- 自定义Firebase数据服务类:Swift 3
- iOS 11.0中不推荐使用“自动调整ScrollViewInsets”
- 确保在Firebase中创build新用户的唯一用户名(Swift)
- 将“全名”字段添加到Firebase电子邮件/密码身份validation?
- 'Set <NSObject>'没有一个名为'anyObject'的成员 – Xcode 6.3
- 在Swift中重写UIScrollView的委托属性(如UICollectionView)
- 使用Swift在Firebase中遍历嵌套的快照子项