我将从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];
哪个有效,但它返回的视图似乎被切断(向上移动?)
答案 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,我敢打赌它的工作原理也是如此。
除此之外,你在没有动画的情况下推动它,并用动画将其关闭。为了获得良好的用户体验,您可能希望再次考虑这种方法。