Files
ASHReactNative/Sources/ASHReactNative.m
T
2017-04-10 17:56:27 +08:00

68 lines
2.0 KiB
Objective-C

//
// ASHReactNative.m
// ASHReactNative
//
// Created by xmfish on 17/4/7.
// Copyright © 2017年 ash. All rights reserved.
//
#import "ASHReactNative.h"
#import "ASHRNBundleManagerImpl.h"
#import "ASHRNViewFactoryImpl.h"
#import "ASHRNBridgeManagerImpl.h"
#import "NSString+Util.h"
@implementation ASHReactNative
+ (instancetype)shareInstance
{
static id instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] init];
});
return instance;
}
- (instancetype)init
{
self = [super init];
if (self) {
_bundleManager = [ASHRNBundleManagerImpl new];
_viewFactory = [ASHRNViewFactoryImpl new];
_rnbridgeFactory = [ASHRNBridgeManagerImpl new];
}
return self;
}
- (void)pushRNViewControllerWithURL:(NSString *)URL
{
NSDictionary* dic = [URL ash_queryDictionary];
[self pushRNViewControllerWithURL:URL modelName:dic[@"model"]];
}
- (void)pushRNViewControllerWithURL:(NSString *)URL modelName:(NSString *)model
{
UIViewController *rnVC = nil;
rnVC = [[ASHReactNative shareInstance].viewFactory rnViewControllerWithBundleURL:URL modelName:model];
[[self getUsingViewController].navigationController pushViewController:rnVC animated:YES];
}
- (void)pushRNViewControllerWithBundleName:(NSString *)bundleName modelName:(NSString *)model
{
UIViewController *rnVC = nil;
rnVC = [[ASHReactNative shareInstance].viewFactory rnViewControllerWithBundleName:bundleName modelName:model];
[[self getUsingViewController].navigationController pushViewController:rnVC animated:YES];
}
- (UIViewController*)getUsingViewController
{
UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
if ([appRootVC isKindOfClass:[UINavigationController class]]) {
return [(UINavigationController*)appRootVC visibleViewController];
}
if ([appRootVC isKindOfClass:[UIViewController class]]) {
return appRootVC;
}
return nil;
}
@end