我是iOS开发的新手。我的问题是,我有两个视图控制器。
viewController - 一个viewController - B
现在,如果我从viewController-A中杀了应用程序而不是重新启动应用程序。比app必须打开viewController - A.如果我从viewController-B中杀了应用程序而不是重新启动应用程序。比app必须打开viewController - B.
任何人都可以帮助我,我已经完成了RND但找不到合适的解决方案。
由于
答案 0 :(得分:1)
在AppDelegate.m文件中创建sharedDelegate
+(AppDelegate *)sharedDelegate {
return(AppDelegate *)[UIApplication sharedApplication] .delegate;
}
+(AppDelegate *)sharedDelegate; @property(非原子,强)NSString * currentViewContoller;
当推送到anyContoller然后将Appdelegates currentViewContoller设置为新VC
viewController * vc = [[viewController alloc] init]; [self.navigationController pushViewController:vc animated:YES];
[AppDelegate sharedDelegate] .currentViewContoller = NSStringFromClass([viewController class]);
现在应用已终止
//应用程序即将终止时调用。如果合适,保存数据。另请参见applicationDidEnterBackground:。
[[NSUserDefaults standardUserDefaults] setObject:[AppDelegate sharedDelegate] .currentViewContoller forKey:@“cuurentVC”];
}
5现在当应用程序首次启动时,在应用程序终止时检查上一个控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSString *string=[[NSUserDefaults standardUserDefaults] valueForKey:@"cuurentVC"];
并推送此课程
UIViewController *object = [[NSClassFromString(string) alloc] init...];
}
答案 1 :(得分:0)
applicationWillTerminate
,但只有当用户从forground
退出应用时才会调用它。如果您的应用处于后台,然后用户退出应用,则applicationWillTerminate
将不会被调用。
所以,你必须照顾applicationDidEnterBackground
。
因此,当app在后台输入(即致电applicationDidEnterBackground
)或致电applicationWillTerminate
时,请在user defaults
中保存状态(您当前的VC)。
现在在didFinishLaunchingWithOptions
设置中将控制器视为rootviewcontroller
或以任何方式管理它。
参考:Apple documentation for applicationWillTerminate
PS:你不应该像这样管理app。这是可怕的方式!如果可能,请将您的应用程序作为正常流程运行!
答案 2 :(得分:0)
如果您正在使用Storyboards
,则可以使用Restoration Identifier
通知应用程序哪个控制器作为第一个启动