diff --git a/lib/ios/RNNBasePresenter.m b/lib/ios/RNNBasePresenter.m index 7f5c9d1d12c..09d7ca01afd 100644 --- a/lib/ios/RNNBasePresenter.m +++ b/lib/ios/RNNBasePresenter.m @@ -21,26 +21,63 @@ - (void)bindViewController:(UIViewController *)bindedViewController { } - (void)applyOptionsOnInit:(RNNNavigationOptions *)initialOptions { - + } - (void)applyOptionsOnWillMoveToParentViewController:(RNNNavigationOptions *)options { UIViewController* viewController = self.bindedViewController; - if ((options.bottomTab.text.hasValue || options.bottomTab.icon.hasValue || options.bottomTab.selectedIcon.hasValue)) { + + if (options.bottomTab.text.hasValue) { + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (options.bottomTab.icon.hasValue) { + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (options.bottomTab.selectedIcon.hasValue) { + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (options.bottomTab.badgeColor.hasValue) { + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (options.bottomTab.textColor.hasValue) { + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (options.bottomTab.iconColor.hasValue) { + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (options.bottomTab.selectedTextColor.hasValue) { + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (options.bottomTab.selectedIconColor.hasValue) { UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:options.bottomTab]; viewController.tabBarItem = tabItem; - [options.bottomTab.text consume]; - [options.bottomTab.icon consume]; - [options.bottomTab.selectedIcon consume]; } } - (void)applyOptions:(RNNNavigationOptions *)options { UIViewController* viewController = self.bindedViewController; - + if (options.bottomTab.badge.hasValue && [viewController.parentViewController isKindOfClass:[UITabBarController class]]) { [viewController rnn_setTabBarItemBadge:options.bottomTab.badge.get]; } + + if (options.bottomTab.badgeColor.hasValue && [viewController.parentViewController isKindOfClass:[UITabBarController class]]) { + [viewController rnn_setTabBarItemBadgeColor:options.bottomTab.badgeColor.get]; + } } - (void)mergeOptions:(RNNNavigationOptions *)newOptions currentOptions:(RNNNavigationOptions *)currentOptions defaultOptions:(RNNNavigationOptions *)defaultOptions { @@ -48,6 +85,52 @@ - (void)mergeOptions:(RNNNavigationOptions *)newOptions currentOptions:(RNNNavig if (newOptions.bottomTab.badge.hasValue && [viewController.parentViewController isKindOfClass:[UITabBarController class]]) { [viewController rnn_setTabBarItemBadge:newOptions.bottomTab.badge.get]; } + + if (newOptions.bottomTab.badgeColor.hasValue && [viewController.parentViewController isKindOfClass:[UITabBarController class]]) { + [viewController rnn_setTabBarItemBadgeColor:newOptions.bottomTab.badgeColor.get]; + } + + if (newOptions.bottomTab.text.hasValue) { + RNNNavigationOptions* buttonsResolvedOptions = [(RNNNavigationOptions *)[currentOptions overrideOptions:newOptions] withDefault:defaultOptions]; + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:buttonsResolvedOptions.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (newOptions.bottomTab.icon.hasValue) { + RNNNavigationOptions* buttonsResolvedOptions = [(RNNNavigationOptions *)[currentOptions overrideOptions:newOptions] withDefault:defaultOptions]; + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:buttonsResolvedOptions.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (newOptions.bottomTab.selectedIcon.hasValue) { + RNNNavigationOptions* buttonsResolvedOptions = [(RNNNavigationOptions *)[currentOptions overrideOptions:newOptions] withDefault:defaultOptions]; + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:buttonsResolvedOptions.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (newOptions.bottomTab.textColor.hasValue) { + RNNNavigationOptions* buttonsResolvedOptions = [(RNNNavigationOptions *)[currentOptions overrideOptions:newOptions] withDefault:defaultOptions]; + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:buttonsResolvedOptions.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (newOptions.bottomTab.selectedTextColor.hasValue) { + RNNNavigationOptions* buttonsResolvedOptions = [(RNNNavigationOptions *)[currentOptions overrideOptions:newOptions] withDefault:defaultOptions]; + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:buttonsResolvedOptions.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (newOptions.bottomTab.iconColor.hasValue) { + RNNNavigationOptions* buttonsResolvedOptions = [(RNNNavigationOptions *)[currentOptions overrideOptions:newOptions] withDefault:defaultOptions]; + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:buttonsResolvedOptions.bottomTab]; + viewController.tabBarItem = tabItem; + } + + if (newOptions.bottomTab.selectedIconColor.hasValue) { + RNNNavigationOptions* buttonsResolvedOptions = [(RNNNavigationOptions *)[currentOptions overrideOptions:newOptions] withDefault:defaultOptions]; + UITabBarItem* tabItem = [RNNTabBarItemCreator updateTabBarItem:viewController.tabBarItem bottomTabOptions:buttonsResolvedOptions.bottomTab]; + viewController.tabBarItem = tabItem; + } }