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 https://github.com/facebook/react-native/pull/12354

Differential Revision: D4598036

Pulled By: shergin

fbshipit-source-id: 9f104fc27db51213a54273e33c5a22f1b350c55e
This commit is contained in:
Benoit VALLON 2017-02-22 11:59:51 -08:00 committed by Facebook Github Bot
parent 13edf6da2b
commit ca2741609a
1 changed files with 4 additions and 3 deletions

View File

@ -107,9 +107,10 @@ RCT_ENUM_CONVERTER(UITabBarSystemItem, (@{
- (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