2010-06-30 91 views
0

我正在构建我的第二个应用程序,我试图从我在第一个脚趾上钉住脚趾的位置学习。复杂布局的ViewController设计问题

就像在上一个应用程序中一样,我的应用程序的某些部分具有沿底部按钮(基本上是自定义选项卡栏)的按钮,可以触发屏幕主区域大部分内容的切换。一个是地图视图,一个是表格视图,一个是网格视图,以三种不同的方式查看相同的对象。

在我上一个应用程序中,每个内容选项都是一个单独的视图,由单独的ViewControllers管理。这工作,但有些地方很尴尬。在这些VC之间传递数据有点棘手(尤其是传回上游),并且我完全被我的嵌套视图控制器无法访问self.navigationController所困惑。可以说,我现在知道如何与该计划合作(而且我也是),但我对更好的方式感兴趣。

我现在在想,也许整个事情应该是一个视图控制器,它应该有单独的顶层UIView对象,当它点击底部的标签时,它将进入和退出。

问题是,我的两个嵌套视图上都有表格。所以我需要写出非常复杂的UITableViewDelegate方法来找出我正在谈论的表,或创建单独的UITableViewController子类来管理我的表数据。无论哪种方式,这只是消除了我希望通过将其全部保留在一个View Controller中而实现的大多数简单性。

另一件事是,有这些内容视图是同一视图控制器内的UIViews有一些分歧。没有加载时间来交换视图,但是如果用户从不访问一个或多个视图选项,我就不需要加载内存。

想法?

回答

0

问题是,我的两个嵌套视图上都有表格。所以我需要写出非常复杂的UITableViewDelegate方法来找出我正在谈论的表,或创建单独的UITableViewController子类来管理我的表数据。

表视图数据源/委托不需要是视图控制器,它可以是任何对象。因此,您可以编写两个自定义类,作为表视图的数据源/委托。

另一件事是,有这些内容视图是同一个视图控制器内的UIViews有一些分歧。没有加载时间来交换视图,但是如果用户从不访问一个或多个视图选项,我就不需要加载内存。

在这种情况下,您应该加载视图,即在需要之前不加载任何东西。并且发布当您收到内存警告时不需要的东西。

+0

谢谢,奥莱。关于主要问题的任何建议?我的嵌套视图应该有单独的控制器吗?你会怎么做? – 2010-06-30 13:42:41

+0

没有一个正确的方法,它完全取决于您的应用程序。 Apple几乎建议我们不要将UIViewControllers用于不占用整个屏幕的视图。但即使你想采纳这个建议,编写自己的自定义控制器(从NSObject分类)也是有意义的,以避免将过多的代码放入主视图控制器。 – 2010-06-30 14:33:16

+0

呵呵。我想,在一个人身上做这件事的兴趣根植于我想要以一种正确的方式去做的愿望。也许我会按照我知道如何去做的方式去做。我在这里有一个截止日期... 谢谢奥莱! – 2010-06-30 15:30:49