将UITableViewController添加到其他View

时间:2012-12-25 17:55:25

标签: objective-c ios uitableview addsubview

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

我知道您可以使用Navigation和TabBar控制器轻松完成此操作,但我对将tableviews添加到常规View控制器时更加好奇。我需要我的tableview占用可用屏幕空间的下半部分(我需要将其余部分用于其他目的,对于这些目的,选项卡和导航类型都不适合)。

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

2 个答案:

答案 0 :(得分:4)

在ogres回答的基础上,你应该将tableViewController的视图添加为子视图,但它不是一切。 tableViewController是一个viewController,它需要知道它的父节点及其子节点才能正确执行它的viewController-job。我在这里不知道任何细节,但是在2011年WWDC上有一个关于这个的全部讨论叫做"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 = ...

答案 1 :(得分:1)

是的,您可以在另一个视图中使用tableview而不会出现任何问题

  

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

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

  

UITableViewController没有.frame属性,

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