2016-02-09 47 views
5

Mam istniejącą aplikację, nad którą pracuję nad integracją React-Native dla jej części. Jestem mający problemy ze zrozumieniem, jak "wyjść" z native-native i wrócić do widoku natywnego.React-Native: Dismiss/Exit React-Native View powrót do Native

Oto niektóre kodu:

// 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]; 

} 

Moje pierwsze reagują poglądy są takie:

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

mam prawego przycisku nawigacyjnego w przeglądarce, które chciałbym „odrzucenie” widoku reagować oraz podstawowy widok macierzysty MainViewController.

Próbowałem oddzwanianie do MainViewController z widoku reagują podobnie jak, ale bez skutku:

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]; 

} 

Każda pomoc z podejściem do „wyjścia” z reagują-rodzimej widzenia i wrócić do rodzimych poglądów byłoby być docenionym.

Odpowiedz

0

UWAGA: To nie robi "T pracuje - Zostawiłam to tutaj jako przykład tego, co nie działa Sprawdź inne moją odpowiedź na podejście, które działa

Jeśli obecny MainViewController ten sposób, popViewController:.. powinien działać

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

Niestety, które nie wydają się działać . – dnstevenson

+0

Potwierdź, że to nie działa, przepraszam – Tejas

1

Jedynym sposobem znalazłem to działa jest this

Istotą jej jest:

  1. Utwórz klasę NotificationManager w Obj-C i narazić go jako React moduł
  2. W ViewController zarejestrowania zgłoszenia, które gdy odbiera wyzwalaczy [self dismissViewController ..]
Powiązane problemy