react-native-navigation的迁移库

RNNControllerFactory.m 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #import "RNNControllerFactory.h"
  2. #import "RNN.h"
  3. #import "RCTRootView.h"
  4. @implementation RNNControllerFactory
  5. +(UIViewController *)createRootViewController:(NSDictionary *)layout
  6. {
  7. if ([layout[@"type"] isEqualToString:@"ContainerStack"]) {
  8. UINavigationController* stack = [[UINavigationController alloc] init];
  9. NSString* containerName = [layout[@"children"] objectAtIndex:0][@"data"][@"name"];
  10. NSString* containerId = [layout[@"children"] objectAtIndex:0][@"id"];
  11. [stack setViewControllers:@[[RNNControllerFactory create:containerName containerId:containerId]] animated:false];
  12. return stack;
  13. }
  14. // NSString* containerName = layout[@"container"][@"name"];
  15. // NSString* containerId = layout[@"container"][@"id"];
  16. // return [RNNControllerFactory create:containerName containerId:containerId];
  17. return nil;
  18. }
  19. +(UIViewController*)create:(NSString*)containerName containerId:(NSString*)containerId
  20. {
  21. RCTRootView *reactView = [[RCTRootView alloc] initWithBridge:RNN.instance.bridge
  22. moduleName:containerName
  23. initialProperties:@{@"containerId": containerId}];
  24. UIViewController* controller = [UIViewController new];
  25. controller.view = reactView;
  26. return controller;
  27. }
  28. @end