我有一个UIStackView
,其子视图应该在 wAny hC 中卸载,并在其他情况下安装。但是,一旦子视图被卸载(如果我旋转设备或者如果它在 hC 加载时),则一旦高度不再紧凑,子视图就不会重新出现。
视图为何不显示?控制台或其他任何地方都没有警告。模拟器和物理设备上的问题是相同的。
如果它有任何区别,堆栈视图最初是hidden
。
答案 0 :(得分:0)
默认情况下,所有Interfacebuilder属性都很弱。从布局中删除视图时,没有对它的引用,属性将被释放(设置为nil)。一个强大的指针应该可以解决你的问题。
weak var myStackView: UIStackView
应改为
var myStackView: UIStackView
供参考:
因为弱引用不会对它引用的实例保持强大的保持,所以可以在弱引用仍然引用它的情况下释放该实例。因此,当引用它的实例被解除分配时,ARC会自动将弱引用设置为nil。因为弱引用需要允许nil作为它们的值,所以它们总是具有可选类型。您可以检查弱引用中是否存在值,就像任何其他可选值一样,您将永远不会得到对不再存在的无效实例的引用。