UIStackView子视图不会重新安装

时间:2016-04-20 20:51:54

标签: ios xcode

我有一个UIStackView,其子视图应该在 wAny hC 中卸载,并在其他情况下安装。但是,一旦子视图被卸载(如果我旋转设备或者如果它在 hC 加载时),则一旦高度不再紧凑,子视图就不会重新出现。

视图为何不显示?控制台或其他任何地方都没有警告。模拟器和物理设备上的问题是相同的。

如果它有任何区别,堆栈视图最初是hidden

1 个答案:

答案 0 :(得分:0)

默认情况下,所有Interfacebuilder属性都很弱。从布局中删除视图时,没有对它的引用,属性将被释放(设置为nil)。一个强大的指针应该可以解决你的问题。

weak var myStackView: UIStackView

应改为

var myStackView: UIStackView

供参考:

  

因为弱引用不会对它引用的实例保持强大的保持,所以可以在弱引用仍然引用它的情况下释放该实例。因此,当引用它的实例被解除分配时,ARC会自动将弱引用设置为nil。因为弱引用需要允许nil作为它们的值,所以它们总是具有可选类型。您可以检查弱引用中是否存在值,就像任何其他可选值一样,您将永远不会得到对不再存在的无效实例的引用。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID48