Permalink
Browse files

Fix badgeColor for previous iOS 10 versions

Summary:
The actual badgeColor prop causes the following error when run on device with a version inferior to iOS 10 like iPad 2 and iPad mini 1.

`*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBarItem setBadgeColor:]: unrecognized selector sent to instance 0x7968be80'`

This PR fixes it by checking at runtime if the selector is available for the current running version.

It also makes the color available at start by using the variable `self.barItem`. Currently, the color appears only after a reload.
Closes #12354

Differential Revision: D4598036

Pulled By: shergin

fbshipit-source-id: 9f104fc27db51213a54273e33c5a22f1b350c55e
  • Loading branch information...
benoitvallon authored and facebook-github-bot committed Feb 22, 2017
1 parent 13edf6d commit ca2741609af68d77581782315edfd19f13371220
Showing with 4 additions and 3 deletions.
  1. +4 −3 React/Views/RCTTabBarItem.m
@@ -107,9 +107,10 @@ - (void)setSelectedIcon:(UIImage *)selectedIcon
- (void)setBadgeColor:(UIColor *)badgeColor
{
#if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
_barItem.badgeColor = badgeColor;
#endif
// badgeColor available since iOS 10
if ([self.barItem respondsToSelector:@selector(badgeColor)]) {
self.barItem.badgeColor = badgeColor;
}
}
- (UIViewController *)reactViewController

0 comments on commit ca27416

Please sign in to comment.