在不嵌套viewcontrollers的情况下编写用户界面

时间:2012-07-06 13:00:20

标签: ios

我是IOS的新手,但已经完成了几个简单的应用程序。 我已经阅读了许多书籍,这些书籍帮助我入门,但我遗漏了更多关于如何最好地构建应用程序的建议 - 特别是关于UI。

我知道这是一个非常普遍的问题,所以我会尝试提出一个具体的问题。关于如何构建这个特定应用的建议..或关于类似主题的良好读取的指针将受到高度赞赏。

现在,这个特定iPad应用程序的UI将如下所示:

主屏幕水平分为两部分。 上三分之二是一种画布/工作空间 下三分之一是一个包含各种项目的工具箱,可以拖动到工作区。 工具箱具有不同的视图,用于保存各种类别的项目。让我们说:一个视图与各种几何图形和一个wiew与各种颜色。用户可以选择要在工具箱中显示的类别。 最后,屏幕顶部是一个带有单个按钮的工具栏。

我对如何构建我的视图/ ViewControllers感到有点困惑。也许我的很多麻烦源于我没有完全理解苹果指南如何使用各种UI元素 - 如果是这种情况,请随时说出来。

这是我开始的方式。 我将构建一个控制主视图的主ViewController。主视图将保持上部工具栏。对于这个视图,我会添加两个子视图。一个用于工作空间,一个用于工具箱。工具箱视图让我有点困惑。我的想法是使这个标签视图,每个项目类别都有一个标签。但是,据我了解,它必然会导致很多麻烦嵌套viewcontrollers就是这种情况。这是否意味着使用tabviewcontroller仅控制部分屏幕是违反准则的?构建我自己的“tabbar”并在选项卡选项卡时只是在子视图之间切换会更好吗?

这是否也意味着,使用导航控制器设置弹出视图,仅覆盖屏幕的一部分同样是不好的做法?或者这必须是一个模态视图?如果一个tableviewcontroller的视图只占用屏幕的一部分呢?我没有看到如何在没有有效嵌套viewcontrollers的情况下完成这些事情。

我确信我完全颠倒了什么?

祝你好运 托马斯

1 个答案:

答案 0 :(得分:0)

嵌套ViewControllers不是问题。实际上,在iOS 5中引入了View Controller Containment以使其更加简单。但是,在新的收容功能之前仍有可能。

嵌套两个ViewControllers的最简单方法如下:

SubViewController *theSubView = [[SubViewController alloc] init];
[self.view addSubview:theSubView.view];

子视图将由SubViewController控制,并将在主ViewController中“嵌套”。 (此代码将成为主ViewController的一部分。)

要使用新的(呃)View Controller Containment方法,您将使SubViewController成为主ViewController的childViewController

来自WWDC 2011的精彩视频超越了View Controller Containment。您需要成为开发人员才能访问它here。它被称为“实现UIViewController包含。”

我不建议以嵌套格式使用TabBarController,您可以更轻松地构建自己的视图切换方法,甚至可以使用UIScrollView pagingEnabled

对于NavigationController的弹出视图,这是一种常见的做法。在其中创建一个带有NavigationController的弹出窗口,用于执行某些操作,访问应用程序设置,或从调色板配置工具,或访问已保存的项目,无论您能想象到什么,都没有错。

我希望这能让你有一个良好的开端。