【问题标题】:UITableViewController inside a UIViewControllerUIViewController 内的 UITableViewController
【发布时间】:2013-12-29 16:56:05
【问题描述】:

我是 iOS 和 Objective-C 的新手,在理解控制器的工作原理时遇到了一些麻烦。

在我的代码中,我有一个 UIViewController(我的自定义控制器由故事板分配),在它内部,连同其他对象,我希望有一个由不同控制器处理的表。这样做的正确方法是什么?

【问题讨论】:

  • 这样做的正确方法是让你的 UITableView 由包含它的 UIViewController 使用 UITableViewControllerDelegate 控制。一个好的起点是developer.apple.com/library/ios/documentation/uikit/reference/…
  • 我知道,但是我想要两个不同的控制器,因为我已经有一个 UITableViewController 用于另一个 UITableView,我想使用相同的代码。

标签: ios uitableview uiviewcontroller storyboard


【解决方案1】:

您可以使该表视图控制器成为您的 UIViewController 的子视图控制器。

在情节提要中,您可以通过将容器视图拖到控制器的视图中轻松地做到这一点,这将自动为您提供一个子视图控制器。

你会想要:

  • 删除它给你的子视图控制器(它只是一个 UIViewController)
  • 拖出一个表格视图控制器
  • 控制从容器视图拖到表格视图控制器
  • 选择“嵌入”。

如果你需要从 UIViewController 获取对这个表视图控制器的引用,你可以在 prepareForSegue 中做——表视图控制器将是 segue 的目标视图控制器,prepareForSegue 将在之后被调用控制器被实例化。

【讨论】:

  • 没有情节提要怎么办?在普通的 xib 文件中。任何想法?谢谢
  • @Malloc,您可以使用自定义容器控制器 api 在代码中执行此操作(它在 UIViewController 类参考中有自己的部分)。基本上,您在父控制器上调用 addChildViewController: ,传递您想要成为子控制器的控制器。然后你在子节点上调用 didMoveToParentViewController:,将父节点作为参数传递。最后,将子视图添加为父视图的子视图。
  • 好主意!我学到了一些新的东西,这为我节省了很多。如何引用父类或子类来传输我的模型视图?
  • @BillDaugherty,child 将在其 parentViewController 属性中有对 parent 的引用,而 parent 通过其 childViewControllers 数组对其子项进行引用。
【解决方案2】:

您需要使用嵌入式容器视图。

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

  2. 删除自动添加并链接到容器视图的整个 UIViewController 和 View(因为您需要一个 Table View Controller)。

  3. 将 UITableViewController 拖到 Storyboard 画布上。

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

剩下的是父视图,现在通过容器视图包含一个 UITableView。表格视图的控制器也在故事板画布上。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      在情节提要中创建另一个 UITableViewController,转到其检查器并为其分配您之前创建的相同 UITableViewController 类...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-07
        相关资源
        最近更新 更多