我想在 Flutter View 上“推送”一个新的原生 View (Android 中的 Activity 和 iOS 中的 UIViewController),在新的原生 View 完成/完成后,让屏幕返回到 Flutter View 。
我可以在 Android 中做到这一点。
但是我对 iOS 很陌生,当我尝试在 ios/Runner/AppDelegate.m
中执行此操作时:
SwiftViewController *swiftViewController = [controller.storyboard instantiateViewControllerWithIdentifier:@"SwiftViewController"];
[(FlutterViewController *)self.window.rootViewController pushViewController:swiftViewController animated:YES];
报错:
No visible @interface for "FlutterViewController" declared the selector 'pushViewController:animated'
那么如何在 iOS 中做到这一点?谢谢
最佳答案
在 Swift 中,我们可以使用方法 channel 从 flutter Action 事件中打开原生 iOS viewController,
- 在flutter中,需要添加以下几行来触发iOS原生方法。在您的操作方法中添加这些行
var platform = const MethodChannel('com.nativeActivity/iosChannel');
final String result = await platform.invokeMethod('StartNativeIOS');
- 在 iOS 中,在 AppDelegate 应用程序方法中添加以下行
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let methodChannel = FlutterMethodChannel(name: "com.nativeActivity/iosChannel", binaryMessenger:controller.binaryMessenger)
methodChannel.setMethodCallHandler({
(call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
if call.method == "StartNativeIOS" {
let mainVC = MainViewController() // Your viewController
let navigationController = UINavigationController(rootViewController: mainVC)
self.window.rootViewController = navigationController
self.window.makeKeyAndVisible()
} else {
result(FlutterMethodNotImplemented)
return
}
})
它会起作用的!干杯
注意:但是没有回到 flutter View 。
所以这是正确的做法。 Flutter Navigation Using Coordinator Pattern
关于ios - 我怎样才能从 FlutterViewController "push"UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45645866/