在将付款网关集成到我的iOS应用中时,我使用了rootViewController属性,如下所示:

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

 UINavigationController *controller = [storyboard instantiateViewControllerWithIdentifier:@"navCtrlID"];

 [[UIApplication sharedApplication].keyWindow setRootViewController:controller];

 [self.navigationController presentViewController:controller animated:YES completion:nil];

它可以完成工作,但是现在我必须多次按返回按钮才能返回。

为什么会这样呢?

最佳答案

RootViewController是应用程序堆栈上的第一个ViewController。
您应该只在AppDelegate上的方法中进行设置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

在您的情况下,由于您是从Storyboard实例化的,因此将首先显示ID为“navCtrlID”的NavigationController。如果它只有一个ViewController,则在按回时不应该弹出导航堆栈。

如果在添加此特定视图之前已显示ViewControllers,则不应那样显示。而是使用例如:
[self presentViewController: controller animated:YES completion:nil];

关于ios - 什么是rootViewController?什么时候使用它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41261893/

10-10 20:56
查看更多