如果用户由于某种原因退出应用程序,我正在构建具有不同状态的应用程序,这些状态需要恢复。这意味着,当应用程序启动时,不同的屏幕/视图控制器需要位于导航堆栈之上。为了达到这个目的,我试图以编程方式构建视图控制器,如下所示:尽管viewDidLoad被调用,但是iOS ViewController并未出现
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
switch (appState)
{
case CSAppStateIdle:
{
//replace and push rootview manually
MainVC* mainView = [storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
[(UINavigationController *)self.window.rootViewController pushViewController:mainView animated:YES];
}
break;
case CSAppStateSomeState:
{
MainVC* mainView = [storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
SomeVC* someView = [storyboard instantiateViewControllerWithIdentifier:@"SomeVC"];
[(UINavigationController *)self.window.rootViewController addChildViewController:mainView];
[(UINavigationController *)self.window.rootViewController pushViewController:someView animated:YES];
}
break;
default:
break;
}
我使用正确设置了ID-s的stroyboard。那么在CSAppStateIdle中它可以工作,但是在CSAppStateSomeState中someView并没有出现在屏幕上,但在某些VC viewDidLoad中,viewWillAppear甚至viewDidAppear被调用。
有没有人遇到过这个,或知道解决方案?我感谢任何帮助,谢谢!
什么是你想实现与'addChildViewController'方法调用? – pbasdf 2014-12-19 11:19:32
我试图建立一个导航堆栈,所以当用户从SomeView推“Back”按钮并调用popViewController时,mainView就会出现。 – UNIQL 2014-12-19 11:33:55