1
我嘗試使用協議來設置具有對UIView的引用的對象佈局。我的觀點類看起來像:如何使用協議從UIView設置對象佈局
protocol FirstViewLayout {
var label: String { get }
var text: String { get }
}
class FirstView: UIView {
@IBOutlet weak var label: UILabel! // reference to object in storyboard
@IBOutlet weak var button: UIButton! // reference to object in storyboard
init(layout: FirstViewLayout){
super.init(frame: UIScreen.mainScreen().bounds)
label.text = layout.text
button.setTitle(layout.text, forState: .Normal)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}//end class
然後我創造,我創建簡單的結構,併爲對象的值從視圖
struct FirstViewStruct: FirstViewLayout {
var label: String { return "Test" }
var text: String { return "TEST" }
}
一個單獨的快捷文件之後,我去ViewControler
和設置它在viewDidLoad()
這樣的:
override func viewDidLoad() {
super.viewDidLoad()
let layout = FirstView(layout: FirstViewStruct())
self.view.addSubview(layout)
}
在這種情況下,我在這一刻recive錯誤
fatal error: unexpectedly found nil while unwrapping an Optional
:
label.text = layout.text
我不知道爲什麼。有人可以幫我解決這個問題嗎?
你可能需要佈局.text區段 – user2277872