From 7d6029f06bd3b4f4336d0d50a1621a5291e43fa7 Mon Sep 17 00:00:00 2001 From: Yogev Ben David Date: Wed, 11 Mar 2020 10:30:37 +0200 Subject: [PATCH] Fix bottomTabs attach mode for sideMenu (#6001) Co-authored-by: Guy Carmeli --- lib/ios/RNNSideMenuChildVC.m | 10 +++++----- lib/ios/RNNSideMenuController.m | 16 +++++++++++++++- lib/ios/UIViewController+LayoutProtocol.m | 4 ++-- .../NavigationTests/RNNSideMenuPresenterTest.m | 6 +++++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/lib/ios/RNNSideMenuChildVC.m b/lib/ios/RNNSideMenuChildVC.m index ab91db468ef..d07a0ace365 100644 --- a/lib/ios/RNNSideMenuChildVC.m +++ b/lib/ios/RNNSideMenuChildVC.m @@ -18,15 +18,15 @@ - (instancetype)initWithLayoutInfo:(RNNLayoutInfo *)layoutInfo creator:(id *)child { _child = child; - [self addChildViewController:self.child]; - [self.child.view setFrame:self.view.bounds]; - [self.view addSubview:self.child.view]; - [self.view bringSubviewToFront:self.child.view]; } - (void)setWidth:(CGFloat)width { diff --git a/lib/ios/RNNSideMenuController.m b/lib/ios/RNNSideMenuController.m index 2cd8acdc65e..eba06910097 100644 --- a/lib/ios/RNNSideMenuController.m +++ b/lib/ios/RNNSideMenuController.m @@ -13,7 +13,7 @@ @implementation RNNSideMenuController - (instancetype)initWithLayoutInfo:(RNNLayoutInfo *)layoutInfo creator:(id)creator childViewControllers:(NSArray *)childViewControllers options:(RNNNavigationOptions *)options defaultOptions:(RNNNavigationOptions *)defaultOptions presenter:(RNNBasePresenter *)presenter eventEmitter:(RNNEventEmitter *)eventEmitter { [self setControllers:childViewControllers]; - self = [super initWithCenterViewController:self.center leftDrawerViewController:self.left rightDrawerViewController:self.right]; + self = [super init]; self.presenter = presenter; [self.presenter bindViewController:self]; @@ -38,6 +38,20 @@ - (void)setDefaultOptions:(RNNNavigationOptions *)defaultOptions { [self.presenter setDefaultOptions:defaultOptions]; } +- (void)loadView { + [super loadView]; + [self setCenterViewController:self.center]; + [self setLeftDrawerViewController:self.left]; + [self setRightDrawerViewController:self.right]; +} + +- (void)render { + [super render]; + [self.center render]; + [self.left render]; + [self.right render]; +} + - (void)setAnimationType:(NSString *)animationType { MMDrawerControllerDrawerVisualStateBlock animationTypeStateBlock = nil; if ([animationType isEqualToString:@"door"]) animationTypeStateBlock = [MMDrawerVisualState swingingDoorVisualStateBlock]; diff --git a/lib/ios/UIViewController+LayoutProtocol.m b/lib/ios/UIViewController+LayoutProtocol.m index e5340d5a356..6373a20a182 100644 --- a/lib/ios/UIViewController+LayoutProtocol.m +++ b/lib/ios/UIViewController+LayoutProtocol.m @@ -77,13 +77,13 @@ - (void)render { [self readyForPresentation]; } - [self.presentedComponentViewController setReactViewReadyCallback:^{ + [self.getCurrentChild setReactViewReadyCallback:^{ [self.presenter renderComponents:self.resolveOptionsWithDefault perform:^{ [self readyForPresentation]; }]; }]; - [self.presentedComponentViewController render]; + [self.getCurrentChild render]; } - (void)readyForPresentation { diff --git a/playground/ios/NavigationTests/RNNSideMenuPresenterTest.m b/playground/ios/NavigationTests/RNNSideMenuPresenterTest.m index 50197c321c0..793d5721c9b 100644 --- a/playground/ios/NavigationTests/RNNSideMenuPresenterTest.m +++ b/playground/ios/NavigationTests/RNNSideMenuPresenterTest.m @@ -16,11 +16,15 @@ @implementation RNNSideMenuPresenterTest - (void)setUp { [super setUp]; self.uut = [[RNNSideMenuPresenter alloc] init]; - self.boundViewController = [OCMockObject partialMockForObject:[RNNSideMenuController new]]; + self.boundViewController = [OCMockObject partialMockForObject:[[RNNSideMenuController alloc] initWithLayoutInfo:nil creator:nil childViewControllers:@[[self createChildVC:RNNSideMenuChildTypeCenter]] options:nil defaultOptions:nil presenter:nil eventEmitter:nil]]; [self.uut bindViewController:self.boundViewController]; self.options = [[RNNNavigationOptions alloc] initEmptyOptions]; } +- (RNNSideMenuChildVC *)createChildVC:(RNNSideMenuChildType)type { + return [[RNNSideMenuChildVC alloc] initWithLayoutInfo:nil creator:nil options:nil defaultOptions:nil presenter:nil eventEmitter:nil childViewController:[UIViewController new] type:type]; +} + - (void)testApplyOptionsShouldSetDefaultValues { [[self.boundViewController expect] side:MMDrawerSideLeft enabled:YES]; [[self.boundViewController expect] side:MMDrawerSideRight enabled:YES];