Objective-C/Swiftで書かれた既存のiOSアプリにコンポーネントを統合しています。リアクションネイティブハイブリッドアプリ:RCTRootViewを埋め込んだPopView UIViewController
私のアプリのルートビューコントローラとして、私はUINavigationController
を使用します。私のアプリの複数のビューコントローラの一
、私は次のコードが含まれているナビゲーションコントローラ内のビューコントローラをプッシュボタンがあります。
@objc class ReactNativeViewController: UIViewController {
override func viewDidLoad() {
let jsCodeLocation = NSURL(string: "http://localhost:8081/index.ios.bundle?platform=ios&dev=true")
let contactsView = RCTRootView(bundleURL: jsCodeLocation, moduleName: "MainComponent", initialProperties: nil, launchOptions: nil)
self.view.addSubview(contactsView)
contactsView.frame = self.view.bounds;
}
}
MainComponent
は、複数のReact-を管理Navigator
を返します。ネイティブコンポーネント:
return (
<Navigator
initialRoute={initialRoute}
renderScene={(route, navigator) => {
if (route.component) {
return <route.component navigator={navigator} {...route.passProps} />;
}
}}
navigationBar={
<Navigator.NavigationBar
routeMapper={this.NavigationBarRouteMapper}
style={styles.navBar}
/>
}
/>
);
そのワークフローは正常に動作します。私が必要とするのは、ボタンBack
が主要なReact-NativeコンポーネントにヒットしたときにReactNativeViewController
を私のUINavigationController
からポップする方法です。
私は次のことを試してみましたが、運と:
UINavigationControllerから表示され、表示のUIViewControllerをポップシングル方法
popLastViewController
でネイティブモジュールを作成します。@implementation RNNavigationControllerBridge RCT_EXPORT_MODULE() RCT_EXPORT_METHOD(popLastViewController) { UINavigationController *navigationController = (UINavigationController *)[[[[UIApplication sharedApplication] delegate] window] rootViewController]; [navigationController popViewControllerAnimated:NO]; } @end
コール戻るボタンがヒットしたときの上記の方法:
onPress={() => { if (index === 0) { NativeViewsManager.popLastViewController(); } else { navigator.pop(); } }}
しかし、それは動作しません。
提案がありますか?
こんにちは、ここにあなたの設定appdelegateまたは別のルートで同じようにルートビュー? – Ramakrishna
appdelegateからのもの –
私は、アプリケーションデリゲートとこのビューコントローラでルートビューを設定することの違いは何ですか?ビューコントローラでルートビューを設定すると、どのように役立ちますか? Plz、これを手伝ってください... – Ramakrishna