2014-01-13 37 views
0

我看到很多问题在SAME视图控制器中询问多个表视图。但我的情况是相反的:我有几个UITableViews在几个不同的UIViewControllers中有确切的功能。我想知道,我怎样才能使所有这些UITableViews在不同UIViewControllers共享相同的委托方法,这样,如果我修改,也就是说,在UITableViews在不同的UIViewControllers共享委托方法

-tableView: cellForRowAtIndexPath 

代码这一变化将发生的所有UITableViews,而不是我进入每个单一的视图控制器并做修改。

回答

0

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

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

  2. 抽象你的viewControllers。创建某种类型的BaseViewController,它将具有共享的功能,如tableView:cellForRowAtIndexPath方法。然后,从BaseViewController中继承你的viewControllers。

希望这会有所帮助, 干杯!

+0

是的,这些解决方案也是我能想到的优雅。在这两者之间,我更喜欢UIViewController的子类化。 – nyus2006

0

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

如果您需要控制器略有不同,您仍然可以创建一个通用类,其中包含常用元素并从中继承您的不同控制器类。

+0

嗨,只有视图控制器中的表视图做同样的事情,视图控制器可以有其他funcionalities。 – nyus2006

0

我想你可以为这两个表设置委托(如果需要的话)。只需将代表包括在两个地方并设置即可。

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

我试图设置委托给符合UITableViewDelegate和UITableViewDataSource的NSObject,但看起来像这个NSObject中的委托方法永远不会被调用。 – nyus2006