一起使用UINavigationController和标签栏

时间:2011-11-16 02:37:21

标签: iphone objective-c ios cocoa-touch

我在基于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];
}

1 个答案:

答案 0 :(得分:0)

[self createTabBar]究竟做了什么?如果以编程方式创建RootViewController,您可以在应用程序委托类中创建@property (nonatomic, retain) RootViewController *myRootController;,在创建控制器之前保存它(最坏的情况:RootViewController在创建后将自己保存到应用程序委托中{ {1}})并且只使用viewDidLoad而不是通过视图层次结构。

通过这种方式,您可以独立于实际的视图组合,如果您正在浏览UITabbar等的子视图,这些视图甚至可能会在iOS更新中发生变化。