什么是rootViewController&我什么时候使用它?

时间:2016-12-21 11:35:31

标签: ios iphone appdelegate rootviewcontroller

在我的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];

它完成了这项工作,但是现在我必须多次按下后退按钮才能返回。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

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

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

在您的情况下,因为您从Storyboard实例化它,具有ID" navCtrlID"的NavigationController;将首先显示。如果它只有一个ViewController,当你按下它时不应该弹出导航堆栈。

如果在添加此特定视图之前显示ViewControllers,则不应该这样显示。相反,请使用例如:

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