在一个UIViewController中可以同时看到多个UITableView

时间:2014-02-05 22:22:29

标签: ios objective-c uitableview uiview uistoryboard

我在一个视图中看到过有关mutliple UITableViews的问题,但它们一次只能看到一个表。我喜欢不同的东西。

在我的脑海里,我想在一个UIView里面的一个UIScrollView中看到四个UITableViews。这四个表将立即可见并填充。它们将具有动态的行数,因此滚动视图将允许用户滚动页面以查看不适合的行。

桌子将并排放置两个,然后在它们的下方并排放置,这样你就可以得到一个2x2的正方形。

我可以(有点)围绕如何在控制器等中编码,但我无法弄清楚如何组织层次结构。我已经尝试使用存储板来布局视图中的表格,但是10个中有9个尝试删除控件失败,因为我显然没有完全理解这一点。

我是否需要在UIViews实现文件中生成UITableViews并将它们作为对象添加到UIView中?或者我可以使用故事板吗?

有人可以解释一下如何构建对象的层次结构吗?

在我脑海中它会是: 的UIViewController

- >的UIView

--->的UIScrollView

------> UITableView的

------> UITableView的

------> UITableView的

------> UITableView的

但在Storyboard中尝试此功能不起作用。我假设每个UITableView都需要自己的UITableViewController以及我在其他帖子中读到的内容,我希望在UIViewController实现文件中进行连接。

感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

我想你可能会尝试将UITableViewController拖到你的视图控制器中,至少我没有那个问题来将4个表视图添加到滚动视图中。

这是我如何添加它

<强> 1.&GT;将滚动视图控件拖动到视图控制器

enter image description here

enter image description here

您的视图控制器应如下所示:

enter image description here

<强> 2.&GT;将表视图控件拖到滚动视图中,并设置该表视图的大小和位置

enter image description here

enter image description here

您的视图控制器应如下所示:

enter image description here

<强> 3.&GT;然后将所有其余3个表视图拖到滚动视图

enter image description here enter image description here

  

但我想在你的案例中提出一些建议

     
      
  1. 在同一个视图控制器中没有使用那么多的表视图,代码中的混乱是为了维护它们。总有更好的   选项比4表视图,也许考虑集合视图。甚至   分开使用流程。

  2.   
  3. 如果我是你,我不会在Scroll视图中使用表视图,它们就像滚动视图里面的滚动视图,如果你不设计   非常好的互动,它们变得非常难以使用。

  4.   
  5. 如果您仍想在同一个视图控制器中使用四个表视图,则需要额外注意表视图数据源和委托。非常小心处理所有案件。
  6.   

希望对你有所帮助。

答案 1 :(得分:3)

表格视图是非常自定义的滚动视图。我不会把它们中的4个放在滚动视图上,这对用户来说不是很直观,因为你的手指会以多种方式滚动视图,具体取决于它接触屏幕的位置。

相反,尝试将2个2x2模式中的4个tableview直接放到简单的UIView上。这可以在Storyboard中完成。

至于填写和使用它们,你有两种方法:

A)你的UIViewController是4个tableviews中每个的委托和数据源。执行时,您可以在第一个参数(调用您的tableview)上执行切换,以确定适当的操作过程。

B)您创建了4个类,每个类处理一个表视图,在UIViewController中实现4个对象,并将UITableviews的委托和数据源属性分配给这些对象。

除了所有技术性之外,单个屏幕中的4个桌面视图非常拥挤。你的设计肯定不会在iPhone上飞行,所以我只假设iPad。即便如此,你应该确保一切都具有视觉吸引力,并且每个控件的目的都很明确。这取决于你,但我不愿意看到你在应用程序上努力工作,只是因为你的视觉设计不适合你的用户而浪费你的努力。

答案 2 :(得分:2)

如果表视图占据滚动视图的整个区域,那么它们不会让任何滚动事件过去到包含它们的滚动视图,除非滚动是水平的。

对于表视图和视图控制器之间的简单一对一,我会让每个表视图都是它自己的UITableViewController的一部分(所以你有四个),然后创建一个UIViewController,将每个UITableViewControllers添加到它一个孩子。

这样你就不必对tableview要求数据的语句做任何奇特的逻辑,因为表视图控制器只有一个表视图。

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html