【问题标题】:Add UITableViewController to other View将 UITableViewController 添加到其他视图
【发布时间】:2012-12-25 17:55:24
【问题描述】:

是否可以通过编程方式将 UITableViewController 嵌入(添加为子视图)到另一个视图控制器中?我在 StackOverflow 上找到了一些答案,但没有一个对 ARC 和 iOS6 SDK 有用。

我知道您可以使用 Navigation 和 TabBar 控制器轻松地做到这一点,但我对将 tableviews 添加到常规 View 控制器更好奇。我需要我的 tableview 占据可用屏幕空间的下半部分(我需要将其余部分用于其他目的,标签和导航类型都不适合)。

但是,当我尝试这样做时,它不起作用。我实例化了一个子类 UITableViewController,但是当我将它作为子视图添加到我的 self.view 中时,编译器说我试图使用“不兼容的指针类型”。不仅如此,我实例化的 UITableViewController 没有 .frame 属性,所以我无法设置它的尺寸,这将是本练习的重点。

【问题讨论】:

  • 自 iOS5 以来,视图控制器嵌套非常好。在 WWDC(我认为是 10 个)集合中有一个很棒的视频。

标签: objective-c ios uitableview addsubview


【解决方案1】:

基于 ogres 的回答,您应该将 tableViewController 的视图添加为子视图,但这并不是全部。 tableViewController 是一个 viewController,它需要知道它的父级和子级,才能正确地完成它的 viewController-job。我不知道这里有什么细节,但是 WWDC 2011 上有一个完整的讨论,叫做"Implementing UIViewController Containment"

仅将视图添加为子视图时,我遇到的一个问题是目标操作似乎不起作用。点击UIButton 或类似会导致EXC_BAD_ACCESSunrecognized selector sent to instance

所以我建议你这样做:

UIViewController *vc = //Your tableViewController
[self addChildViewController:vc]; //Important
[self.view addSubview:vc.view];

//If you want to set the frame, set the frame of the tableViewController's view
vc.view.frame = ...

【讨论】:

    【解决方案2】:

    是的,您可以在另一个视图中使用 tableview 没有任何问题

    UITableViewController,但是当我将它作为子视图添加到我的 self.view 时

    您是否尝试将 viewcontroller 添加为子视图或其视图? (viewcontroller.view)

    UITableViewController 没有 .frame 属性,

    当然它没有 .frame 属性,它是一个视图控制器,你应该看到 .view.frame

    【讨论】:

    • 该死,这样的菜鸟错误。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多