【发布时间】:2012-10-07 04:57:18
【问题描述】:
我一直在尝试实施状态恢复和保存,但没有任何运气。
我没有使用故事板。我一定是做错了什么。
我为每个 Nib 文件设置了恢复标识符。
我知道状态正在被存储,但从未正确恢复。最后一个状态显示半秒钟,然后返回主视图。我尝试了很多没有运气的事情。请帮忙!
-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"will finish");
return YES;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
navigator = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = navigator;
[self.window makeKeyAndVisible];
[navigator release];
NSLog(@"did finish");
return YES;
}
// As you can see, I started the process of saving and restoring application state.
// Also, I added the restoration identifier for every class that should be restored.
-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
{
NSLog(@"restoring");
return YES;
}
-(BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
{
return YES;
}
-(void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder
{
NSLog(@"restored");
//navigator = [[UINavigationController alloc] initWithRootViewController:];
isRestored = YES;
}
【问题讨论】:
-
我还没有理由致力于集成状态保存/恢复,但我突然想到,您可能会在应用程序中踩到恢复状态:didFinishLaunchingWithOptions: 方法。您的 NSLog() 在控制台中显示的顺序是什么?
-
克里斯蒂安,谢谢你的回答。 NSLogs 按以下顺序显示:“将完成”“正在恢复”“已恢复”“已完成”我确信您指出的是正确的。问题是我不确定如何解决它。我已经尝试了很多东西。我在 iOS 方面的经验有限。
-
我试图让它在没有故事板的情况下工作但没有成功。看起来故事板正在处理大量工作,而在代码中执行需要您编写实际的保存代码。不过我可能是错的。 developer.apple.com/library/ios/#documentation/iphone/…
标签: objective-c ios ios6