【问题标题】:Is there any preferred approach to constructing multiview applications in iOS?在 iOS 中构建多视图应用程序是否有任何首选方法?
【发布时间】:2012-01-30 19:29:07
【问题描述】:

简介

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

我的研究

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

我的问题

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

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

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

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

实际问题

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

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

任何输入都会被应用:)

提前致谢。

【问题讨论】:

  • 这篇文章的介绍很好..!! :)
  • 哈哈,很高兴你喜欢它 :) 良好的问题陈述可以在沟通问题时发挥重要作用:)

标签: iphone ios ipad multiview


【解决方案1】:

前段时间我一直在寻找类似的模式。根据我的发现,我得出结论,处理登录屏幕的最佳方法是将其注入主应用程序窗口。所以你在你的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];

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

【讨论】:

  • 啊哈,这看起来是个不错的方法 :) 我最初的担心肯定是登录屏幕似乎不必要地使视图层次结构复杂化。谢谢您的帮助! :)
猜你喜欢
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多