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

3

简介

我在使用iOS平台进行应用程序开发方面还比较新手。目前,我需要为iPhone和iPad开发一个多视图应用程序。

我的研究

我一直在研究多视图应用程序的开发,并发现通常的方法是使用提供的控制器之一作为根视图控制器(UI选项卡控制器等)。或者编写自己的根视图控制器。

我的问题

我目前正在解决的具体问题主要涉及如何构建更复杂的应用程序,包括:

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

我想到的解决方案是:

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

实际问题

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

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

任何意见都将不胜感激:)

谢谢。


1
帖子的展示很好,太棒了! :) - Yama
1
哈哈,很高兴你喜欢 :) 好的问题展示能够在传达问题时起到至关重要的作用 :) - CodingBeagle
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]; 。
这很有用,因为您不需要不必要地扩展视图层次结构。

啊哈,这看起来是一个不错的做法 :) 我最初的担忧肯定是登录界面似乎使视图层次结构变得不必要地复杂了。感谢您的帮助! :) - CodingBeagle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接