ViewController复杂布局的设计问题

时间:2010-06-30 13:18:31

标签: iphone uiviewcontroller

我正在构建我的第二个应用程序,而我正试图从第一个应用程序中学习我的脚趾。

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

在我的上一个应用程序中,我将每个内容选项都视为一个单独的视图,由单独的ViewControllers管理。这很有效,但有些地方很尴尬。在这些VC之间传递数据有点棘手(特别是向上游传回),例如,我对嵌套视图控制器无法访问self.navigationController感到困惑。可以说我现在知道如何使用该方案(我也这样做),但我对更好的方式感兴趣。

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

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

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

思想?

1 个答案:

答案 0 :(得分:0)

  

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

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

  

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

在这种情况下,您应该懒惰地加载视图,即在需要之前不要加载任何内容。并且当您收到内存警告时,释放当前不需要的内容。