瀏覽代碼

Fixes options merging

yogevbd 6 年之前
父節點
當前提交
5d98174699
共有 3 個文件被更改,包括 11 次插入8 次删除
  1. 3
    7
      lib/ios/RNNCommandsHandler.m
  2. 3
    0
      lib/ios/RNNNavigationControllerPresenter.m
  3. 5
    1
      lib/ios/RNNParentOptionsResolver.m

+ 3
- 7
lib/ios/RNNCommandsHandler.m 查看文件

67
 - (void)mergeOptions:(NSString*)componentId options:(NSDictionary*)mergeOptions completion:(RNNTransitionCompletionBlock)completion {
67
 - (void)mergeOptions:(NSString*)componentId options:(NSDictionary*)mergeOptions completion:(RNNTransitionCompletionBlock)completion {
68
 	[self assertReady];
68
 	[self assertReady];
69
 	
69
 	
70
-	UIViewController<RNNLayoutProtocol>* vc = (UIViewController<RNNLayoutProtocol>*)[_store findComponentForId:componentId];
70
+	UIViewController* vc = [_store findComponentForId:componentId];
71
 	RNNNavigationOptions* options = [[RNNNavigationOptions alloc] initWithDict:mergeOptions];
71
 	RNNNavigationOptions* options = [[RNNNavigationOptions alloc] initWithDict:mergeOptions];
72
-	[CATransaction begin];
73
-	[CATransaction setCompletionBlock:completion];
74
 	
72
 	
75
 	while (vc != nil) {
73
 	while (vc != nil) {
76
 		if ([vc conformsToProtocol:@protocol(RNNLayoutProtocol)]) {
74
 		if ([vc conformsToProtocol:@protocol(RNNLayoutProtocol)]) {
77
-			[vc mergeOptions:options];
75
+			[(UIViewController<RNNLayoutProtocol>*)vc mergeOptions:options];
78
 		}
76
 		}
79
-		vc = (UIViewController<RNNLayoutProtocol>*)vc.parentViewController;
77
+		vc = vc.parentViewController;
80
 	}
78
 	}
81
-
82
-	[CATransaction commit];
83
 }
79
 }
84
 
80
 
85
 - (void)setDefaultOptions:(NSDictionary*)optionsDict completion:(RNNTransitionCompletionBlock)completion {
81
 - (void)setDefaultOptions:(NSDictionary*)optionsDict completion:(RNNTransitionCompletionBlock)completion {

+ 3
- 0
lib/ios/RNNNavigationControllerPresenter.m 查看文件

4
 
4
 
5
 - (void)present:(RNNNavigationOptions *)options onViewControllerDidLoad:(UINavigationController *)navigationController {
5
 - (void)present:(RNNNavigationOptions *)options onViewControllerDidLoad:(UINavigationController *)navigationController {
6
 	[options applyOnNavigationController:navigationController];
6
 	[options applyOnNavigationController:navigationController];
7
+}
7
 
8
 
9
+- (void)present:(RNNNavigationOptions *)options onViewControllerWillAppear:(UINavigationController *)navigationController {
10
+	[options applyOnNavigationController:navigationController];
8
 }
11
 }
9
 
12
 
10
 @end
13
 @end

+ 5
- 1
lib/ios/RNNParentOptionsResolver.m 查看文件

3
 @implementation RNNParentOptionsResolver
3
 @implementation RNNParentOptionsResolver
4
 
4
 
5
 - (void)resolve:(UIViewController<RNNLayoutProtocol> *)parent with:(NSArray<UIViewController<RNNLayoutProtocol> *> *)children {
5
 - (void)resolve:(UIViewController<RNNLayoutProtocol> *)parent with:(NSArray<UIViewController<RNNLayoutProtocol> *> *)children {
6
-	
6
+	for (UIViewController<RNNLayoutProtocol>* child in parent.childViewControllers) {
7
+		if ([parent conformsToProtocol:@protocol(RNNLayoutProtocol)] && [child conformsToProtocol:@protocol(RNNLayoutProtocol)]) {
8
+			[parent.options mergeOptions:child.options overrideOptions:YES];
9
+		}
10
+	}
7
 }
11
 }
8
 
12
 
9
 @end
13
 @end