3

简介

我在使用 iOS 平台的应用程序开发领域是个新手。目前我需要为 iPhone 和 iPad 开发一个多视图应用程序。

我的研究

我一直在对多视图应用程序的开发进行一些研究,发现一般的方法是使用提供的控制器之一作为根视图控制器(UI 选项卡栏控制器等)。要么,要么编写自己的根视图控制器。

我的问题

我现在要解决的具体问题主要是关于如何构建一个更复杂的应用程序,其中包括:

- 登录视图(这是打开应用程序时呈现给用户的第一个视图) - 应使用 UI 选项卡栏控制器导航的应用程序的其余部分)

我现在想出的是这个想法:

创建一个自定义根视图控制器。这个根视图控制器将首先向用户呈现登录视图(通过将登录视图添加为其自身的子视图)。登录后,它应该将子视图更改为 UI 选项卡栏控制器。

实际问题

那么我的问题是,这是否是一种可接受的方法?基本上我会有一个根视图控制器,它通过将这些视图添加为它自己的子视图来在视图之间切换。

我还没有真正找到任何讨论可接受的方法的文章。我对当前想法的担忧是,拥有一个基本上包含应用程序所有视图的主根视图控制器,并且它们之间的切换会很快变得混乱?

任何输入都会被应用:)

提前致谢。

4

1 回答 1

2

前段时间我一直在寻找类似的模式。根据我的发现,我得出结论,处理登录屏幕的最佳方法是将其注入主应用程序窗口。所以你在你的UIApplicationDelegate课堂上这样做

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    if ([self loginNeeded])
    {
        [self presentLoginScreen];
    }else
    {
        [self presentTabBarController];
    }

    [self.window makeKeyAndVisible];
    return YES;
}

即 presentLoginScreen 看起来像这样:

- (void)presentLoginScreen
{
    SMLoginViewController* loginVC=[[SMLoginViewController alloc] initWithNibName:@"SMLoginViewController" bundle:[NSBundle mainBundle]];
    [self.window setRootViewController:loginVC];
    [loginVC release];
}

类似地,在[self presentTabBarController]我创建包含实际应用程序的 UITabbarController 然后调用[self.window setRootViewController:tabbarController];

这很有用,因为您不需要扩展视图层次结构。

于 2012-01-30T11:29:07.037 回答