mirror of
https://github.com/wu736139669/ASHReactNative.git
synced 2026-08-05 05:54:53 +00:00
68 lines
2.0 KiB
Objective-C
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
|