[ASViewController] Ensure we retain a reference to the UIVC object returned by the initWithViewController: block.

This commit is contained in:
Scott Goodson 2016-03-02 22:38:56 -08:00
parent edd567a91d
commit cc07d77d68

View File

@ -27,6 +27,7 @@
ASDisplayNodeViewControllerBlock _viewControllerBlock; ASDisplayNodeViewControllerBlock _viewControllerBlock;
ASDisplayNodeDidLoadBlock _viewControllerDidLoadBlock; ASDisplayNodeDidLoadBlock _viewControllerDidLoadBlock;
ASDisplayNode *_viewControllerNode; ASDisplayNode *_viewControllerNode;
UIViewController *_viewController;
} }
@end @end
@ -63,15 +64,16 @@
if (_viewControllerBlock != nil) { if (_viewControllerBlock != nil) {
UIViewController *viewController = _viewControllerBlock(); _viewController = _viewControllerBlock();
_viewControllerBlock = nil; _viewControllerBlock = nil;
if ([viewController isKindOfClass:[ASViewController class]]) { if ([_viewController isKindOfClass:[ASViewController class]]) {
ASViewController *asViewController = (ASViewController *)viewController; ASViewController *asViewController = (ASViewController *)_viewController;
_viewControllerNode = asViewController.node; _viewControllerNode = asViewController.node;
[_viewController view];
} else { } else {
_viewControllerNode = [[ASDisplayNode alloc] initWithViewBlock:^{ _viewControllerNode = [[ASDisplayNode alloc] initWithViewBlock:^{
return viewController.view; return _viewController.view;
}]; }];
} }
[self addSubnode:_viewControllerNode]; [self addSubnode:_viewControllerNode];