在多个屏幕上使用相同的UITableViewController

时间:2012-11-25 16:43:03

标签: ios delegates uitableview

在我的应用中,我在几个不同的页面中显示了一个活动源。所以我没有复制代码,这个feed有它自己的UITableViewController代码。对于每个页面,我想指定此feed(Table)应显示的区域,并在每个位置使用相同的UITableViewController代码。我该怎么做?所有逻辑/代码都应由UITableViewController处理,而不是基本VC

我尝试创建一个包含所有行/节/攻丝逻辑的特定UITableViewController(FeedViewController)类。然后,对于我在UITableView中放置的每个页面,分配FeedViewController,并将delegate / datasource设置为FeedViewController。这非常有效除非我想要推出新屏幕或调用reloadData (基于用户与表的交互方式)。我必须将一个委托消息发送回基本VC,如'pushThisView'或'reloadThisTable'。 这看起来很脏。

如何使嵌入式UITableViewController重新加载它的自己的表,并将新视图推送/关闭到父VC上?

1 个答案:

答案 0 :(得分:3)

您应该使用UIViewController's class reference中所述的容器视图控制器。这允许您将任何UIViewController嵌入到具有自定义框架和转换的任何父UIViewController内。虽然您会在文档和answer中找到您需要了解的所有内容,但这里有一个代码示例,可以帮助您:

FeedViewController *feedViewController = ... // create your view controller
[self addChildViewController:feedViewController];
feedViewController.view.frame = ... // frame for view
[self.view addSubview: feedViewController.view];

[feedViewController didMoveToParentViewController:self];