|
@@ -20,8 +20,10 @@
|
20
|
20
|
[[[RCCManager sharedInstance].getBridge uiManager] configureNextLayoutAnimation:nil withCallback:^(NSArray* arr){} errorCallback:^(NSArray* arr){}];
|
21
|
21
|
});
|
22
|
22
|
|
23
|
|
- [RCCTabBarController sendScreenTabChangedEvent:viewController];
|
24
|
|
-
|
|
23
|
+ if (tabBarController.selectedIndex != [tabBarController.viewControllers indexOfObject:viewController]) {
|
|
24
|
+ [RCCTabBarController sendScreenTabChangedEvent:viewController];
|
|
25
|
+ }
|
|
26
|
+
|
25
|
27
|
return YES;
|
26
|
28
|
}
|
27
|
29
|
|
|
@@ -45,11 +47,11 @@
|
45
|
47
|
{
|
46
|
48
|
self = [super init];
|
47
|
49
|
if (!self) return nil;
|
48
|
|
-
|
|
50
|
+
|
49
|
51
|
self.delegate = self;
|
50
|
|
-
|
|
52
|
+
|
51
|
53
|
self.tabBar.translucent = YES; // default
|
52
|
|
-
|
|
54
|
+
|
53
|
55
|
UIColor *buttonColor = nil;
|
54
|
56
|
UIColor *selectedButtonColor = nil;
|
55
|
57
|
NSDictionary *tabsStyle = props[@"style"];
|
|
@@ -63,7 +65,7 @@
|
63
|
65
|
buttonColor = color;
|
64
|
66
|
selectedButtonColor = color;
|
65
|
67
|
}
|
66
|
|
-
|
|
68
|
+
|
67
|
69
|
NSString *tabBarSelectedButtonColor = tabsStyle[@"tabBarSelectedButtonColor"];
|
68
|
70
|
if (tabBarSelectedButtonColor)
|
69
|
71
|
{
|
|
@@ -71,7 +73,7 @@
|
71
|
73
|
self.tabBar.tintColor = color;
|
72
|
74
|
selectedButtonColor = color;
|
73
|
75
|
}
|
74
|
|
-
|
|
76
|
+
|
75
|
77
|
NSString *tabBarBackgroundColor = tabsStyle[@"tabBarBackgroundColor"];
|
76
|
78
|
if (tabBarBackgroundColor)
|
77
|
79
|
{
|
|
@@ -116,19 +118,19 @@
|
116
|
118
|
viewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:title image:iconImage tag:0];
|
117
|
119
|
viewController.tabBarItem.accessibilityIdentifier = tabItemLayout[@"props"][@"testID"];
|
118
|
120
|
viewController.tabBarItem.selectedImage = iconImageSelected;
|
119
|
|
-
|
|
121
|
+
|
120
|
122
|
if (buttonColor)
|
121
|
123
|
{
|
122
|
124
|
[viewController.tabBarItem setTitleTextAttributes:
|
123
|
125
|
@{NSForegroundColorAttributeName : buttonColor} forState:UIControlStateNormal];
|
124
|
126
|
}
|
125
|
|
-
|
|
127
|
+
|
126
|
128
|
if (selectedButtonColor)
|
127
|
129
|
{
|
128
|
130
|
[viewController.tabBarItem setTitleTextAttributes:
|
129
|
131
|
@{NSForegroundColorAttributeName : selectedButtonColor} forState:UIControlStateSelected];
|
130
|
132
|
}
|
131
|
|
-
|
|
133
|
+
|
132
|
134
|
// create badge
|
133
|
135
|
NSObject *badge = tabItemLayout[@"props"][@"badge"];
|
134
|
136
|
if (badge == nil || [badge isEqual:[NSNull null]])
|
|
@@ -151,92 +153,92 @@
|
151
|
153
|
|
152
|
154
|
- (void)performAction:(NSString*)performAction actionParams:(NSDictionary*)actionParams bridge:(RCTBridge *)bridge completion:(void (^)(void))completion
|
153
|
155
|
{
|
154
|
|
- if ([performAction isEqualToString:@"setBadge"])
|
|
156
|
+ if ([performAction isEqualToString:@"setBadge"])
|
|
157
|
+ {
|
|
158
|
+ UIViewController *viewController = nil;
|
|
159
|
+ NSNumber *tabIndex = actionParams[@"tabIndex"];
|
|
160
|
+ if (tabIndex)
|
155
|
161
|
{
|
156
|
|
- UIViewController *viewController = nil;
|
157
|
|
- NSNumber *tabIndex = actionParams[@"tabIndex"];
|
158
|
|
- if (tabIndex)
|
159
|
|
- {
|
160
|
|
- int i = (int)[tabIndex integerValue];
|
161
|
|
-
|
162
|
|
- if ([self.viewControllers count] > i)
|
163
|
|
- {
|
164
|
|
- viewController = [self.viewControllers objectAtIndex:i];
|
165
|
|
- }
|
166
|
|
- }
|
167
|
|
- NSString *contentId = actionParams[@"contentId"];
|
168
|
|
- NSString *contentType = actionParams[@"contentType"];
|
169
|
|
- if (contentId && contentType)
|
170
|
|
- {
|
171
|
|
- viewController = [[RCCManager sharedInstance] getControllerWithId:contentId componentType:contentType];
|
172
|
|
- }
|
173
|
|
-
|
174
|
|
- if (viewController)
|
|
162
|
+ int i = (int)[tabIndex integerValue];
|
|
163
|
+
|
|
164
|
+ if ([self.viewControllers count] > i)
|
175
|
165
|
{
|
176
|
|
- NSObject *badge = actionParams[@"badge"];
|
177
|
|
-
|
178
|
|
- if (badge == nil || [badge isEqual:[NSNull null]])
|
179
|
|
- {
|
180
|
|
- viewController.tabBarItem.badgeValue = nil;
|
181
|
|
- }
|
182
|
|
- else
|
183
|
|
- {
|
184
|
|
- viewController.tabBarItem.badgeValue = [NSString stringWithFormat:@"%@", badge];
|
185
|
|
- }
|
|
166
|
+ viewController = [self.viewControllers objectAtIndex:i];
|
186
|
167
|
}
|
187
|
168
|
}
|
188
|
|
-
|
189
|
|
- if ([performAction isEqualToString:@"switchTo"])
|
|
169
|
+ NSString *contentId = actionParams[@"contentId"];
|
|
170
|
+ NSString *contentType = actionParams[@"contentType"];
|
|
171
|
+ if (contentId && contentType)
|
|
172
|
+ {
|
|
173
|
+ viewController = [[RCCManager sharedInstance] getControllerWithId:contentId componentType:contentType];
|
|
174
|
+ }
|
|
175
|
+
|
|
176
|
+ if (viewController)
|
190
|
177
|
{
|
191
|
|
- UIViewController *viewController = nil;
|
192
|
|
- NSNumber *tabIndex = actionParams[@"tabIndex"];
|
193
|
|
- if (tabIndex)
|
|
178
|
+ NSObject *badge = actionParams[@"badge"];
|
|
179
|
+
|
|
180
|
+ if (badge == nil || [badge isEqual:[NSNull null]])
|
194
|
181
|
{
|
195
|
|
- int i = (int)[tabIndex integerValue];
|
196
|
|
-
|
197
|
|
- if ([self.viewControllers count] > i)
|
198
|
|
- {
|
199
|
|
- viewController = [self.viewControllers objectAtIndex:i];
|
200
|
|
- }
|
|
182
|
+ viewController.tabBarItem.badgeValue = nil;
|
201
|
183
|
}
|
202
|
|
- NSString *contentId = actionParams[@"contentId"];
|
203
|
|
- NSString *contentType = actionParams[@"contentType"];
|
204
|
|
- if (contentId && contentType)
|
|
184
|
+ else
|
205
|
185
|
{
|
206
|
|
- viewController = [[RCCManager sharedInstance] getControllerWithId:contentId componentType:contentType];
|
|
186
|
+ viewController.tabBarItem.badgeValue = [NSString stringWithFormat:@"%@", badge];
|
207
|
187
|
}
|
208
|
|
-
|
209
|
|
- if (viewController)
|
|
188
|
+ }
|
|
189
|
+ }
|
|
190
|
+
|
|
191
|
+ if ([performAction isEqualToString:@"switchTo"])
|
|
192
|
+ {
|
|
193
|
+ UIViewController *viewController = nil;
|
|
194
|
+ NSNumber *tabIndex = actionParams[@"tabIndex"];
|
|
195
|
+ if (tabIndex)
|
|
196
|
+ {
|
|
197
|
+ int i = (int)[tabIndex integerValue];
|
|
198
|
+
|
|
199
|
+ if ([self.viewControllers count] > i)
|
210
|
200
|
{
|
211
|
|
- [self setSelectedViewController:viewController];
|
|
201
|
+ viewController = [self.viewControllers objectAtIndex:i];
|
212
|
202
|
}
|
213
|
203
|
}
|
214
|
|
-
|
215
|
|
- if ([performAction isEqualToString:@"setTabBarHidden"])
|
|
204
|
+ NSString *contentId = actionParams[@"contentId"];
|
|
205
|
+ NSString *contentType = actionParams[@"contentType"];
|
|
206
|
+ if (contentId && contentType)
|
216
|
207
|
{
|
217
|
|
- BOOL hidden = [actionParams[@"hidden"] boolValue];
|
218
|
|
- [UIView animateWithDuration: ([actionParams[@"animated"] boolValue] ? 0.45 : 0)
|
219
|
|
- delay: 0
|
220
|
|
- usingSpringWithDamping: 0.75
|
221
|
|
- initialSpringVelocity: 0
|
222
|
|
- options: (hidden ? UIViewAnimationOptionCurveEaseIn : UIViewAnimationOptionCurveEaseOut)
|
223
|
|
- animations:^()
|
224
|
|
- {
|
225
|
|
- self.tabBar.transform = hidden ? CGAffineTransformMakeTranslation(0, self.tabBar.frame.size.height) : CGAffineTransformIdentity;
|
226
|
|
- }
|
227
|
|
- completion:^(BOOL finished)
|
228
|
|
- {
|
229
|
|
- if (completion != nil)
|
230
|
|
- {
|
231
|
|
- completion();
|
232
|
|
- }
|
233
|
|
- }];
|
234
|
|
- return;
|
|
208
|
+ viewController = [[RCCManager sharedInstance] getControllerWithId:contentId componentType:contentType];
|
235
|
209
|
}
|
236
|
|
- else if (completion != nil)
|
|
210
|
+
|
|
211
|
+ if (viewController)
|
237
|
212
|
{
|
238
|
|
- completion();
|
|
213
|
+ [self setSelectedViewController:viewController];
|
239
|
214
|
}
|
|
215
|
+ }
|
|
216
|
+
|
|
217
|
+ if ([performAction isEqualToString:@"setTabBarHidden"])
|
|
218
|
+ {
|
|
219
|
+ BOOL hidden = [actionParams[@"hidden"] boolValue];
|
|
220
|
+ [UIView animateWithDuration: ([actionParams[@"animated"] boolValue] ? 0.45 : 0)
|
|
221
|
+ delay: 0
|
|
222
|
+ usingSpringWithDamping: 0.75
|
|
223
|
+ initialSpringVelocity: 0
|
|
224
|
+ options: (hidden ? UIViewAnimationOptionCurveEaseIn : UIViewAnimationOptionCurveEaseOut)
|
|
225
|
+ animations:^()
|
|
226
|
+ {
|
|
227
|
+ self.tabBar.transform = hidden ? CGAffineTransformMakeTranslation(0, self.tabBar.frame.size.height) : CGAffineTransformIdentity;
|
|
228
|
+ }
|
|
229
|
+ completion:^(BOOL finished)
|
|
230
|
+ {
|
|
231
|
+ if (completion != nil)
|
|
232
|
+ {
|
|
233
|
+ completion();
|
|
234
|
+ }
|
|
235
|
+ }];
|
|
236
|
+ return;
|
|
237
|
+ }
|
|
238
|
+ else if (completion != nil)
|
|
239
|
+ {
|
|
240
|
+ completion();
|
|
241
|
+ }
|
240
|
242
|
}
|
241
|
243
|
|
242
|
244
|
+(void)sendScreenTabChangedEvent:(UIViewController*)viewController {
|