【问题标题】:Two view controllers with table views inside scroll view两个视图控制器,滚动视图内有表视图
【发布时间】:2015-11-07 10:07:21
【问题描述】:

我应该如何为以下场景实现表格视图-数据源架构:

  • 两个视图控制器,每个控制器都包含自己的表格视图。
  • 表格视图单元格相同
  • 不同的数据源(一个应该显示名称,另一个应该显示城市)
  • 视图控制器位于水平滚动视图中
  • 数据可以从table1传输到table2

我的问题是我不知道代表表格视图的最佳方式是什么。

  • 我应该有一个视图控制器,一个表视图和不同的数据源吗?
  • 具有两个表视图的两个视图控制器?

谁有好的解决方案?
我尝试了很多解决方案,但我的问题始终是我没有办法将数据从一个传输到另一个,因为我无法访问数据源或使用协议时委托为 nil。

【问题讨论】:

  • 你的视图控制器结构是什么?一个视图控制器是否使用 UINavigationController 推送另一个视图控制器?

标签: ios swift uitableview


【解决方案1】:

您绝对应该只有一个 Tableview 和一个具有 2 个不同数据源的视图控制器(如果可能)。编程的基本规则之一是永远不要重复自己。

假设你有 2 个视图控制器 A 和 B。 A 和 B 都将是同一个 ViewController 类的实例,例如A = SomeViewController() 和 B = SomeViewController()。在 viewDidLoad 中,您可以指定使用哪个数据源。

如果您在将数据从 Viewcontroller A 传输到 Viewcontroller B 时遇到问题,您可以在 SomeViewController 类上创建一个公共方法,该方法会将对象添加到数据源(例如 addCityToDatasource:)

例如,如果你想要一个从 B 到 A 的城市,在 viewController B 中你调用 A.addCityToDataSource("Tokyo") 这会将城市添加到 A 的数据源中

【讨论】:

  • 我仍然不知道传输数据应该如何工作。所以我正在创建这 2 个 VC 并将它们添加到另一个 VC 的滚动视图中。所以我将创建 2 个实例:nameVC 和itiesVC,但它们都使用相同的视图控制器。因此,在视图控制器内部,我没有创建 2 个实例……这让我有点困惑,无法理解所有事情应该如何工作。如果不是太多,你能举个例子吗?
  • 当然没问题。你能告诉我更多关于你的用例吗?
  • 没关系,我有点明白你所说的并设法解决它。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
相关资源
最近更新 更多