RN 노트 - TabNavigator 비 Push 디 스 플레이 원본 페이지

react - native 사용 react-native-tab-navigator 아래쪽 네 비게 이 션 을 사용 하려 면 Tab 네 비게 이 션 이 rn 보기 와 native 네 이 티 브 네 이 티 브 네 이 티 브 네 이 티 브 네 이 티 브 네 이 티 브 네 이 티 브 보 기 를 전환 해 야 합 니 다.
rn 홈 페이지 참조:http://reactnative.cn/docs/0.41/native-component-ios.html#content 추출 하여 다음 과 같은 내용 을 정리 하 다.
1. IOS 로 컬 파일
생 성 클래스 RNChatViewManager,. h 파일 과. m 파일 코드 는 다음 과 같 습 니 다. 그 중에서 ChatContactViewController 보 여줄 원본 보기 컨트롤 러 입 니 다.
// RNChatViewManager.h
#import "RCTViewManager.h"
#import "ChatContactViewController.h"

@interface RNChatViewManager : RCTViewManager

@property (nonatomic, strong) ChatContactViewController *chatContactVC;

@end
// RNChatViewManager.m
#import "RNChatViewManager.h"

@implementation RNChatViewManager
RCT_EXPORT_MODULE()

- (UIView *)view{
    _chatContactVC = [[ChatContactViewController alloc] init];
    return _chatContactVC.view;
}

@end

2. RN 코드 설정
Native 구성 요소 requireNativeComponent 를 불 러 오 려 면 가 져 오기 RNChatView 가 필요 합 니 다. 즉, Native 프로젝트 에서 만 든 RNChatViewManager 클래스 를 호출 합 니 다.
메모 쓰기: RNChatView 는 RNChatViewManager 클래스 를 requireNativeComponent ('RNChatViewManager', ChatView) 로 변경 할 수 없 음 을 나타 낸다.
import React, { Component, PropTypes } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  requireNativeComponent,
} from 'react-native';

var OCChatView = requireNativeComponent('RNChatView', ChatView);

export default class ChatView extends Component {
  static propTypes = {
    color: PropTypes.string,
  };
  render(){
    return(
      
    );
  }
}

3. 주의사항
상기 설정 은 rn 네 비게 이 션 이 js 페이지 와 oc 페이지 사이 에서 서로 전환 되 는 것 을 실현 할 수 있 으 나 oc 페이지 의 push 점프 동작 을 클릭 할 때 반응 이 없습니다.RN 이 네 이 티 브 를 돌 릴 때 메 인 스 레 드 에서 실행 해 야 하고, 기본 값 은 보조 스 레 드 에 있 기 때문이다.
//     
//    IS_USING_REACT_NATIVE      RN     
 if (IS_USING_REACT_NATIVE) {
    [AppDelegate RNPushViewControllerWith:vc];
  }else{
     [self.navigationController pushViewController:vc animated:YES];
  }
//    appDelegate.m
//     push  ,    
+ (void)RNPushViewControllerWith:(UIViewController *)vc{
    dispatch_async(dispatch_get_main_queue(), ^{
        AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        [app.nav pushViewController:vc animated:YES];
    });
}

좋은 웹페이지 즐겨찾기