在一个 UIViewController 中处理多个 UITableView 的最佳方法?
Posted
技术标签:
【中文标题】在一个 UIViewController 中处理多个 UITableView 的最佳方法?【英文标题】:Best way to handle multiple UITableViews in one UIViewController? 【发布时间】:2010-01-12 00:20:22 【问题描述】:我有一个UIViewController
,它应该能够显示具有多个数据源的tableView
s。 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 中处理多个视图
iPhone - 在 UIViewController 中处理触摸幻灯片