因此,这是一种奇怪的一个,我不太明白是怎么回事...意外类嵌套 - 代码运行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