在iOS中构建多视图应用程序有什么首选方法吗?

时间:2012-01-30 11:15:31

标签: iphone ios ipad multiview

简介

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

我的研究

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

我的问题

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

-A登录视图(这是打开应用程序时向用户显示的第一个视图) - 应使用UI标签栏控制器导航应用程序的其余部分

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

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

实际问题

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

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

任何输入都是适当的:)

提前致谢。

1 个答案:

答案 0 :(得分: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];

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