UITableViewController在UIViewController中

问题描述:

我是iOS和Objective-C的新手,在理解控制器的工作方式方面遇到了一些麻烦。UITableViewController在UIViewController中

在我的代码我有一个UIViewController(与故事板分配我的自定义控制器),并在其内部,与其他物体放在一起,我想有一个不同的控制器处理的表。什么是正确的方法来做到这一点?

+0

的*这样做,是让你的UITableView由包含它使用UITableViewControllerDelegate的控制的UIViewController的正确方法*。一个良好的开始是https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html –

+1

我知道,但我想有两个不同的控制器,因为我已经有另一个UITableView的UITableViewController,我想使用相同的代码。 – Heisenberg

您可以使表视图控制器UIViewController中的一个子视图控制器。在故事板中,您可以通过将容器视图拖动到控制器视图中来轻松完成此操作,并且会自动为您提供子视图控制器。你需要删除它给你的控制器(它只是一个UIViewController),拖出一个表视图控制器,控制从容器视图拖动到表视图控制器,并选择“嵌入”。如果你需要从UIViewController获得对这个表视图控制器的引用,你可以在prepareForSegue中做到这一点 - 表视图控制器将是segue的目标视图控制器,而prepareForSegue将在控制器实例化后立即调用。

+1

这正是我所期待的,谢谢! – Heisenberg

+0

没有故事板会怎么做?在正常的xib文件中。任何想法?谢谢 – Malloc

+2

@Malloc,你在代码中使用自定义容器控制器api(它在UIViewController类的引用中有它自己的部分)做到这一点。基本上,你可以调用addChildViewController:在你的父控制器上传递你想要成为孩子的控制器。然后你调用didMoveToParentViewController:在子节点上传递父节点作为参数。最后,将子视图添加为父视图的子视图。 – rdelmar

添加到的UITableViewController故事情节,创造的UITableViewController的子类(新文件)。在Storyboard中,转到Identity Inspector并在您创建的子类的Class字段类型名称中。之后,您必须根据您的要求添加您的应用程序逻辑。

在故事板制作其他的UITableViewController,去其检查,并为其分配您已经之前创建相同的UITableViewController类...

你会想要使用嵌入式容器视图。

  1. 将“容器视图”从Interface Builder侧栏拖到视图中。这添加并链接了一个默认的“包含”UIView/Controller。

  2. 删除整个的UIViewController并查看自动添加并链接到容器视图(因为你会希望有一个表视图控制器来代替)。

  3. 将一个UITableViewController到故事板画布。

  4. 控制-将来自容器视图到表视图控制器。选择“嵌入”以在容器视图中包含UITableView。

你留下了父视图,现在包含通过容器视图的UITableView。表视图的控制器也在故事板画布上。

Table View Controller inside a Container View