2016-06-11 81 views
0

當斯威夫特繼承UIView的,你需要有初始化函數我可以在Swift中更簡潔地描述UIView嗎?

override init(frame: CGRect) 
{ 
    super.init(frame:frame) 
    initMyStuff() 
} 

required init?(coder aDecoder: NSCoder) 
{ 
    super.init(coder:aDecoder) 
    initMyStuff() 
} 

override func awakeFromNib() 
{ 
    super.awakeFromNib() 
    initMyStuff() 
} 

internal func initMyStuff() 
{ 
    // Init class variables and setup constraints here 
} 

肯定有一個更好的辦法來做到這一點。至少,對於initMyStuff函數,更好的命名約定是什麼?也許有一種方法擴展UIView有一個自定義的初始化函數,我可以在我的自定義類中重寫?

+0

爲什麼你的代碼,以便嗦?如果你的子類是從nib(storyboard等)實例化的,'initMyStuff'將被稱爲_twice_。那真的是你想要的嗎? – matt

+1

這個問題可能更適合[代碼評論](http://codereview.stackexchange.com/)。這個問題的答案將主要是基於意見的。 – JAL

+0

呵呵,我甚至不知道Code Review。我會檢查出來的。 – GoldenJoe

回答

0

您可以創建一個方便的初始化像這樣:)

convenience init(someValue: String) { 
    self.init(frame : CGRectZero) 
    ..... 
} 
相關問題