我在基于UINavigation的应用程序中添加了一个标签栏,“applicationWillTerminate”(见下文)中的代码不再有效。我试图改变代码以适应标签栏但却无法使其工作。
如何更改'applicationWillTerminate'中的代码以使用我的标签栏?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
[window makeKeyAndVisible];
[self createTabBar];
// this subview causes the code in 'applicationWillTerminate' to no longer work
[window addSubview:tabBarController.view];
return YES;
}
- (void)applicationWillTerminate:(UIApplication *)application
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
RootViewController *viewController = (RootViewController *)[navigationController.viewControllers objectAtIndex:0];
[viewController.dataOjects saveData];
}
答案 0 :(得分:0)
[self createTabBar]
究竟做了什么?如果以编程方式创建RootViewController,您可以在应用程序委托类中创建@property (nonatomic, retain) RootViewController *myRootController;
,在创建控制器之前保存它(最坏的情况:RootViewController在创建后将自己保存到应用程序委托中{ {1}})并且只使用viewDidLoad
而不是通过视图层次结构。
通过这种方式,您可以独立于实际的视图组合,如果您正在浏览UITabbar等的子视图,这些视图甚至可能会在iOS更新中发生变化。