2016-02-09 9 views
5

У меня есть существующее приложение, в котором я работаю над интеграцией React-Native на часть его. Я , не понимая, как «выйти» реагировать, и вернуться к собственному виду.React-Native: Dismiss/Exit React-Native View back to Native

Вот код:

// Main objective-c code that bootstraps the react-native view. This view is loaded as a modal view. 
MainViewController.m: 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"IndexApp" initialProperties:props launchOptions:nil]; 

    rootView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height-49); 
    [self.view addSubview:rootView]; 

} 

Мой первоначальный реагировать взгляды такие:

render() { 
    return (
     <Navigator 
      style={styles.container} 
... 

У меня есть кнопка правой кнопкой нав на навигаторе, что я хотел бы, чтобы «уволить» РЕАКТ вид и основной вид основного экрана MainViewController.

Я попытался обратного вызова MainViewController из среагировать зрения, как это так, но без толку:

RCT_EXPORT_METHOD(dismiss:(NSString *)name location:(NSString *)location) 
{ 
    NSLog(@"dismiss..."); 
    // these don't do anything 
    //[self dismissViewControllerAnimated:YES completion:nil]; 
    //[self.navigationController popViewControllerAnimated:YES]; 
    // anything with _rootView doesn't do anything, i.e. _rootView removeFromSuperview]; 

} 

Любая помощь с подходом к «выходу» на реакцию нативным зрения и вернуться в родные взгляды были бы быть оцененным.

ответ

0

Примечания: Это Безразлично "T РАБОТА - Я оставил это здесь в качестве примера того, что не работает Проверьте мой другой ответ на подход, который работает

Если вы представите MainViewController таким образом, popViewController:.. должен работать

NSURL *jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; 
RCTRootView *reactView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation 
                moduleName:@"SimpleApp" 
              initialProperties:nil 
               launchOptions:nil]; 


MainViewController *rootViewController = [MainViewController new]; 
rootViewController.view = reactView; 

[[self navigationController] pushViewController:rootViewController animated:YES]; 
+0

К сожалению, это не похоже на работу , – dnstevenson

+0

Может подтвердить, что это не работает, извините – Tejas

1

Единственным способом я нашел это работает, this

суть его является:

  1. Создать класс NotificationManager в Obj-C и разоблачить его как Реагировать модуль
  2. В ViewController зарегистрировать уведомление, которое, когда получает триггеры [само dismissViewController ..]
Смежные вопросы