2016-01-22 54 views
0

我有一个viewController由应用程序启动中的故事板实例化,这是混合应用程序的一部分。除此之外,我还介绍了一个视图控制器。现在,当解散presentedViewController时,我想关闭rootViewController以显示混合应用程序屏幕。我怎样才能做到这一点?关闭按钮抽头上的rootViewController

+0

能否请您分享您的代码,你如何展示你的RootViewController的和otherViewController – iOSEnthusiatic

+0

[_arViewController setOnlyShowItemsWithinRadarRange:YES]; [self presentViewController:_arViewController animated:NO completion:nil]; } 这就是我如何呈现第二个ViewController。第一个是故事板的默认视图控制器 –

+0

它将关闭呈现的ViewController。我想解散/删除rootViewController以及混合应用程序屏幕应显示。 –

回答

0
[self dismissViewControllerAnimated:YES completion:^{ 


// after your second view controller dismissed. 
// set your new view controller as a root of window. 
// You need to set navigation controller and set any root view controller for that navigation controller in storyboard. 
// also don't forget to set identifier of your navigation controller. 


    UINavigationController* rootController = [[UIStoryboard storyboardWithName:kStoryboardName bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"controllerIdentifier"]; 

    UIWindow* window = [[UIApplication sharedApplication] keyWindow]; 
    window.rootViewController = rootController; 

    // this will set your new navigation controller with root view on UIWindow. 

}]; 
+0

“在呈现的ViewController上找不到属性窗口”错误 –

+0

请参阅我编辑的答案 – iOSEnthusiatic

+0

我想仅删除根视图控制器,而不是将其更改为某些其他控制器。然后只有混合应用程序屏幕可以点击它。现在,原生应用程序屏幕仍然处于混合应用程序屏幕之上,因此混合应用程序不会接受任何点击 –

1

好的,我对Worklight一无所知。或者什么是混合应用程序。所以这可能没有意义。但是,对于你的问题,这是严格的iOS回答。

如果没有用另一个视图控制器替换它,关闭根视图控制器并没有什么意义。如果你这样做,你会离开你的应用程序无法与之交互(除了可能摇动手机?)。

所以没有办法像使用子视图控制器一样解雇它。但你可以删除它。

UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; 
[keyWindow.rootViewController.view removeFromSuperview]; 
keyWindow.rootViewController = nil; 
0
NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy]; 
[viewControllers removeObjectAtIndex:0]; 
[self.navigationController setViewControllers:viewControllers];