diff --git a/ios/BottomTabPresenter.mm b/ios/BottomTabPresenter.mm index 367a6dfbeb..e8fda7f80c 100644 --- a/ios/BottomTabPresenter.mm +++ b/ios/BottomTabPresenter.mm @@ -38,7 +38,10 @@ - (void)mergeOptions:(RNNNavigationOptions *)mergeOptions - (void)createTabBarItem:(UIViewController *)child bottomTabOptions:(RNNBottomTabOptions *)bottomTabOptions { - child.tabBarItem = [_tabCreator createTabBarItem:bottomTabOptions mergeItem:child.tabBarItem]; + UITabBarItem *updatedItem = [_tabCreator createTabBarItem:bottomTabOptions mergeItem:child.tabBarItem]; + if (updatedItem != child.tabBarItem) { + child.tabBarItem = updatedItem; + } } @end diff --git a/ios/RNNTabBarItemCreator.mm b/ios/RNNTabBarItemCreator.mm index 10d4b615a4..a6161cd0d6 100644 --- a/ios/RNNTabBarItemCreator.mm +++ b/ios/RNNTabBarItemCreator.mm @@ -5,7 +5,7 @@ @implementation RNNTabBarItemCreator - (UITabBarItem *)createTabBarItem:(UITabBarItem *)mergeItem { - return [UITabBarItem new]; + return mergeItem ?: [UITabBarItem new]; } - (UITabBarItem *)createTabBarItem:(RNNBottomTabOptions *)bottomTabOptions diff --git a/playground/ios/NavigationTests/BottomTabPresenterTest.mm b/playground/ios/NavigationTests/BottomTabPresenterTest.mm index e23bb455c9..176d873ea0 100644 --- a/playground/ios/NavigationTests/BottomTabPresenterTest.mm +++ b/playground/ios/NavigationTests/BottomTabPresenterTest.mm @@ -57,7 +57,7 @@ - (void)testMergeOptions_shouldSetTabBarItemColorWithDefaultOptions { XCTAssertEqual(self.componentViewController.tabBarItem.title, @"title"); } -- (void)testMergeOptions_shouldCreateNewTabBarItemInstance { +- (void)testMergeOptions_shouldReuseExistingTabBarItemInstance { RNNNavigationOptions *defaultOptions = [RNNNavigationOptions emptyOptions]; defaultOptions.bottomTab.selectedIconColor = [Color withColor:UIColor.greenColor]; self.uut.defaultOptions = defaultOptions; @@ -69,8 +69,8 @@ - (void)testMergeOptions_shouldCreateNewTabBarItemInstance { [self.uut mergeOptions:mergeOptions resolvedOptions:self.options child:self.componentViewController]; - UITabBarItem *newTabBarItem = self.componentViewController.tabBarItem; - XCTAssertNotEqual(currentTabBarItem, newTabBarItem); + UITabBarItem *updatedTabBarItem = self.componentViewController.tabBarItem; + XCTAssertEqual(currentTabBarItem, updatedTabBarItem); } @end