从AppDelegate中解除viewController

时间:2015-09-04 15:00:27

标签: ios objective-c

我将从AppDelegate提供一个教程视图:

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

....

  EERootVC *rootVC = (EERootVC *)self.window.rootViewController;
    UINavigationController *navcon = (UINavigationController*)rootVC.contentViewController;

    EETutorialRootVC *rootTutorialViewController = [rootVC.storyboard instantiateViewControllerWithIdentifier:@"EETutorialRoot"];

[navcon pushViewController:rootTutorialViewController animated:NO];

return YES
}

完成后如何解除这个新观点?

我试过这个:

[self.navigationController  popViewControllerAnimated:YES];

哪个有效,但它返回的视图似乎被切断(向上移动?)

2 个答案:

答案 0 :(得分:0)

它不会是self,因为在self中调用AppDelegate引用自身(将AppDelegate

如果你想从AppDelegate中删除它,你只需要做同样的事情来呈现它:

[rootTutorialViewController popViewControllerAnimated:YES]; 

但你很可能不会在AppDelegate中忽略它,你更可能会在视图控制器主类中忽略它,这就是你称之为自我的地方

答案 1 :(得分:0)

嗯,似乎你使用了一些必须提供洞察力的自定义设置,所以我们可以给你一个更好的答案。

如果window.rootViewController是UINavigationController的一个实例,你会有相当默认的行为,如果你推送和弹出ViewControllers,一切看起来都不错。

但是你从window.rootViewController的自定义属性获取UINavigationController。这表明EERootVC是一些自定义的ContainerViewController,我的赌注出现了问题,你将EERootVC.contentViewController添加到它的视图并设置它的框架。

例如,将UINavigationController设置为Window的rootViewController,我敢打赌它的工作原理也是如此。

除此之外,你在没有动画的情况下推动它,并用动画将其关闭。为了获得良好的用户体验,您可能希望再次考虑这种方法。