在一个 UIViewController 中处理多个 UITableView 的最佳方法?

Posted

技术标签:

【中文标题】在一个 UIViewController 中处理多个 UITableView 的最佳方法?【英文标题】:Best way to handle multiple UITableViews in one UIViewController? 【发布时间】:2010-01-12 00:20:22 【问题描述】:

我有一个UIViewController,它应该能够显示具有多个数据源的tableViews。 UITableView 的大小约为屏幕的一半,并且有上下按钮可以让您浏览不同的数据。每次按下向上和向下按钮时,我想最终使用UIViewAnimationTransitionCurlDown 或类似的东西来显示下一个UITableView

问题是:我是否需要多个UIViewControllers 来执行此操作,每个都嵌入一个tableView?我应该只创建一个UITableView 实例并在按下向上或向下按钮时更改其数据源吗?如果它只是 UITableView 的一个实例,我如何设法在它占用的屏幕部分上获得卷曲过渡,使其看起来像一个新的 tableView 即将到来?

【问题讨论】:

【参考方案1】:

为什么不让每个表视图都属于它自己的UITableViewController,并将它们嵌套在当前屏幕的视图控制器中?这样,屏幕的视图控制器负责交换其子视图,每个子视图都有一个表视图控制器,其中包含显示其数据所需的逻辑。

最后,它归结为您的功能和数据集的外观。最终可能更容易实现表视图数据源和委托代码一次,将实际数据源注入此类 - 或者为每个表视图编写自定义数据源代码可能更容易。

【讨论】:

如何将一个视图控制器“嵌套”到另一个视图控制器?我了解添加子视图和所有内容,但要添加一个 uitableviewcontroller? 您的“父”视图控制器将负责创建适当的表视图控制器并显示它们的视图。没有理由不能同时在屏幕上显示多个视图,由单独的视图控制器控制。 是的,基本上你的 viewDidLoad 方法可以简单地做类似 topTableController = [[MyTopTableController alloc] init]; topTableController.view = self.topTableView; topTableController.delegate = self; (或在 nib 文件中做类似的事情)......已经看过这个似乎更容易每个表使用一个控制器,而不是尝试使用一个控制器作为多个表的委托/ds。你可以这样做,因为委托方法传递了一个指向 UITableView 的指针,你可以在 if() 或 switch() 上打开它,但使用多个“子控制器”可能是一种更简洁的设计

以上是关于在一个 UIViewController 中处理多个 UITableView 的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

在一个 UIViewController 中处理多个 UITableView 的最佳方法?

适当调整 UIViewController 的视图大小

如何在一个 UIViewController 中处理多个视图

iPhone - 在 UIViewController 中处理触摸幻灯片

通过引用传递 UIViewController 或在另一个处理程序类中获得自我控制

在 UIViewController 我怎样才能有一个方法自动处理很多按钮