如何从FlutterViewController“推送”UIViewController

我想在我们的Flutter视图中“推送”一个新的原生视图(如在iOS中的Activity和UIViewController),然后在完成/完成新的原生视图之后,使屏幕返回到我们的Flutter视图。

我可以在Android中执行此操作。 但是当我尝试在ios/Runner/AppDelegate.m执行此操作时,我对iOS很新。

  SwiftViewController *swiftViewController = [controller.storyboard instantiateViewControllerWithIdentifier:@"SwiftViewController"]; [(FlutterViewController *)self.window.rootViewController pushViewController:swiftViewController animated:YES]; 

它给出了错误:

没有可见的@interface为“FlutterViewController”声明选择器’pushViewController:animated’

那么如何在iOS中做到这一点? 谢谢

更新

问题解决了,你可以在这里找到我的示例代码。

您需要以编程方式或在故事板中将FlutterViewController嵌入到容器UINavigationController中,然后您将能够推送下一个控制器。

以下是以编程方式嵌入的示例:

 @interface AppDelegate() @property (nonatomic, strong) UINavigationController *navigationController; @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [GeneratedPluginRegistrant registerWithRegistry:self]; UIViewController *flutterViewController = [[FlutterViewController alloc] init]; self.navigationController = [[UINavigationController alloc] initWithRootViewController:flutterViewController]; [self.navigationController setNavigationBarHidden:YES]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = self.navigationController; [self.window makeKeyAndVisible]; return true; } - (void)pushExample { UIViewController *viewController = [[UIViewController alloc] init]; [self.navigationController pushViewController:viewController animated:true]; } @end 

需要时(例如按钮点击)调用pushExample 。 您也可以在此video中查看“故事板”方式

pushViewController仅在您的控制器是navigation stack的一部分时才有效,即如果您的FlutterViewController嵌入在UINavigationController ,那么您可以像这样push另一个控制器:

  self.navigationController?.pushViewController(swiftViewController, animated: true) 

第二个选项是 :如果FlutterViewController没有嵌入到UINavigationController ,你可以简单地从中present另一个控制器,如下所示:

  self.present(swiftViewController, animated: true, completion: nil) 

也许你可以看一下webview插件。 与您的描述类似,他们启动一个新的Activity或UIViewController。 显然,你不需要开始使用webview。