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?
- 如何使用Eureka创build自定义行内行?
- Swift将NSNumber的对象转换为Double
- 如何水平翻转UIImage与Swift?
- UITextView专注,但用户触摸UICollectionViewCell。 隐藏键盘并运行didSelectItemAtIndexPath
- 如何告诉我的UITableViewCell在内容更改时自动resize?
- Alamofire – 使用照片时图像上传失败
- 单身VS VS静态(类)variables
- 如何正确地closures作为模式呈现的UINavigationController?
- Swift UIColor初始值设定项 – 仅在定位iPhone5时才编译错误