我正在尝试使用以下代码声明和初始化属性.
class ClassName: UIViewController {
??private let doneButtonItem = UIBarButtonItem(title: "Done", style:?UIBarButtonItemStyle.Plain, target: self, action: "doneButtonDidTapped")
func doneButtonDidTapped() {
println("Ulala!")
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误.
Cannot find an initializer for type 'UIBarButtonItem' that accepts an argument list of type '(title: String, style: UIBarButtonItemStyle, target: ClassName -> () -> ClassName, action: String)'
Run Code Online (Sandbox Code Playgroud)
谁知道这里发生了什么?我是否应该放弃尝试使用声明内联初始化属性并在init()方法上进行初始化?
正如@giorashc所说,由于swift的两阶段初始化,自我尚未初始化,所以你不能这样做.
但我认为你可以创建一个懒惰的inialization:
lazy private var doneButtonItem : UIBarButtonItem = {
[unowned self] in
return UIBarButtonItem(title: "Done", style:UIBarButtonItemStyle.Plain, target: self, action: "doneButtonDidTapped")
}()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |