From 8920b60dcd2ceb3fba6b8bae3aee22e6ba99ca6e Mon Sep 17 00:00:00 2001 From: ricky Date: Tue, 13 Dec 2016 09:34:05 -0800 Subject: [PATCH] [ASDisplayNode] Remove node from supernode before adding it as a subview (#2746) * [ASDisplayNode] Remove node from supernode before adding it as a subview If a node is being added as a subview to a UIVIew, we must make sure to remove it as a subnode of its supernode. * remove from supernode if adding to a layer. --- AsyncDisplayKit/ASDisplayNode.mm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/AsyncDisplayKit/ASDisplayNode.mm b/AsyncDisplayKit/ASDisplayNode.mm index 859e7caabf..1533893093 100644 --- a/AsyncDisplayKit/ASDisplayNode.mm +++ b/AsyncDisplayKit/ASDisplayNode.mm @@ -3876,6 +3876,9 @@ static const char *ASDisplayNodeAssociatedNodeKey = "ASAssociatedNode"; if (selfNode) { [selfNode addSubnode:subnode]; } else { + if (subnode.supernode) { + [subnode removeFromSupernode]; + } [self addSubview:subnode.view]; } } @@ -3891,6 +3894,9 @@ static const char *ASDisplayNodeAssociatedNodeKey = "ASAssociatedNode"; if (selfNode) { [selfNode addSubnode:subnode]; } else { + if (subnode.supernode) { + [subnode removeFromSupernode]; + } [self addSublayer:subnode.layer]; } }