不同UIViewControllers中的UITableViews共享委托方法

时间:2014-01-13 19:48:21

标签: ios objective-c uitableview delegates share

我在SAME视图控制器中看到了许多询问多个表视图的问题。但我的情况正好相反: 我有几个UITableViews在几个不同的UIViewControllers中具有确切的功能。我想知道,如何让所有这些UITableViews在DIFFERENT UIViewControllers中共享相同的委托方法,这样如果我修改,比如说,

中的代码
-tableView: cellForRowAtIndexPath

所有UITableView都会发生这种变化,而不是我进入每个单一的视图控制器并进行修改。

3 个答案:

答案 0 :(得分:0)

如果逻辑控制器具有相同的逻辑,则不需要多个视图控制器。您可以只拥有同一个班级的多个实例。例如,您有一个包含逻辑的SomeTableViewController,而在StoryBoard中,只需添加作为该类实例的新视图控制器。

如果您需要稍微不同的控制器,您仍然可以创建一个包含公共元素的泛型类,并从中继承您的不同控制器类。

答案 1 :(得分:0)

有多种方法可以实现此功能。我有两种方法可以想到。

  1. 创建UITableView的子类并创建一个方法,让我们说customCellForRowAtIndexPath:来实现您的共享功能。然后在您的视图中,控制器使tableViews成为此自定义UITableView的子类,并在tableView:cellForRowAtIndexPath中调用customCellForRowAtIndexPath:

  2. 摘要你的viewControllers。创建某种具有BaseViewController方法共享功能的tableView:cellForRowAtIndexPath。然后从BaseViewController

  3. 继承您的viewControllers

    希望这有帮助, 干杯!

答案 2 :(得分:0)

我认为你可以为两个表设置委托(如果需要数据存储)。只需在两个地方都包含代理并进行设置即可。

[self.myTable setDelegate:myTableDelegate];
[self.myTable setDataSource:myTableDelegate];