因此,這是一種奇怪的一個,我不太明白是怎麼回事...意外類嵌套 - 代碼運行10過於頻繁(SWIFT)
所以我做了一些自定義在彼此類/對象(UIViews)是這樣的:
class Example1: UIView {
[properties etc.]
let Test = Example2()
Test.frame = CGRe...
addSubview(Test)
}
class Example2: UIView {
[properties etc.]
}
,直到你添加某種有趣的這一切工作正常參見Example2。然後,它會多次運行一切(如果您調用Example1,Example2 = 1,2,它將按以下順序運行:1,1,2,2,1,2,1,2,2,2)。
這樣做的問題是,它會創建同一對象的多個版本,但具有不同的值,因爲它們是在其他位置(大小和位置等)計算的。
我希望我能夠解釋我這樣的問題,否則是整個(相當凌亂,因爲我一直在試圖解決這個問題)代碼:http://pastebin.com/4D3kt1uN(如果你像你可以嘗試運行它在xcode中查看我的意思)。
任何幫助,非常感謝!
問題是你的代碼是在'layoutSubviews'中,它可以(通常會)被多次調用。每次,您的代碼都會創建並添加新的子視圖(其中每個子視圖都會接收到'layoutSubviews'調用)。您應該**在課程的初始者中創建**子視圖; 'layoutSubviews'應該確保它們位於正確的位置。 – pbasdf
@pbasdf這解決了它運行多次的問題,但我應該用什麼作爲初始化/構造函數?我已經嘗試了所需的init編碼器和框架,但是它只會執行第一個類(或者沒有)... – Mats
例如,如果有'let monday = RoosterViewMonday()','init()'方法是稱爲(不是'init(frame:)'或'init(coder:)')。修改爲使用'let monday = RoosterViewMonday(frame:....)'或實現'init()'。同樣的其他雞...意見。 – pbasdf