我在iPhone项目故事板中定义了以下工作流程:
appDidFinishLaunching:
中实例化的正确控制器现在我想实现一个“注销”过程 - 一个按钮擦除所有用户数据,并将用户带回原来的“登录/设置帐户”屏幕。
我遇到了一个问题,由于应用程序的多个状态,我需要有多个路径才能返回主屏幕。例如:
UIViewController* parent = self.presentingViewController;
UIViewController* grandparent = self.presentingViewController;
[self.presentingViewController dismissViewControllerAnimated:YES completion:^{
DLog(@"first dismiss");
DLog(@"%@",parent);
DLog(@"%@",grandparent);
[parent dismissViewControllerAnimated:YES completion:^{
DLog(@"second dismiss");
[grandparent.navigationController popToRootViewControllerAnimated:YES];
}];
}];
我如何实施上面定义的登录/注销逻辑?
是否有正确的方法可以完全折叠当前屏幕上的视图层次结构并将其替换为另一个?
我在想这个:
[self.window setRootViewController:tabBarViewController];
但我不确定这是否会正确卸载我正在分离的旧rootViewController堆栈所使用的所有资源。
答案 0 :(得分:-1)
使用NSUserDefault存储登录值,在调用任何viewController之前检查userdefault ... 在注销时从Userdefaults删除值或在注销时使用此代码
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];