App desing:UINavigationController中的UITabBarController

时间:2014-10-01 12:53:14

标签: ios design-patterns uinavigationcontroller uitabbarcontroller

我的应用必须有一个启动屏幕,我可以执行一些操作,例如更新网页内容。完成此过程后,我会在UITabBarController内显示整个应用程序界面。在某些时候,应用程序必须返回此启动视图控制器来处理应用程序数据的更新。

Apple 特别声明UITabBarController应该是任何应用的根视图控制器。

我正在寻找聪明的方式在UIViewController之前展示UITabBarController而不将它们都嵌入UINavigationController

我目前有我想要避免的设置(UINavigationController - > UITabBarController),因为它有效且有意义。我害怕Apple不喜欢它,所以我期待着这个主题的一些亮点。

1 个答案:

答案 0 :(得分:1)

然而,我读过的任何内容都没有说根控制器必须在应用程序的整个生命周期内保持不变。怎么样...... ...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.tabController = (UITabBarController *)[self.window rootViewController];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    self.altController = [storyboard instantiateViewControllerWithIdentifier:@"AlternateController"];
    return YES;
}

- (void)swapRootControllers {
    if ([[self.window rootViewController] isKindOfClass:[UITabBarController class]]) {
        self.window.rootViewController = self.altController;
    } else {
        self.window.rootViewController = self.tabController;
    }
}

...假设所有支持变量声明和故事板实现。