如何将UIViewController的视图作为子视图添加到UITableViewCell?

时间:2014-05-21 12:35:35

标签: ios objective-c uitableview uiviewcontroller

我有一个可重复使用的UIViewController子类(音频/视频播放器,我们称之为MediaController)。当我将它作为子视图控制器添加到其他视图控制器时它可以正常工作,但我的要求是也将它添加到UITableViewCell子类中。由于-addChildViewController:UIViewController的方法,我将我的视图添加到单元格中:

self.mediaController.view.frame = self.containerView.bounds;
[self.containerView addSubview:self.mediaController.view];

containerView只是单元格视图层次结构中的占位符视图。)

然而,这会导致问题,首先是因为MediaController在-viewWillAppear-viewWillDisappear中有一些逻辑(当然永远不会被调用),第二,因为当MediaController的视图看起来autolayout似乎无法正常工作被添加到单元格中。

你认为我有其他选择(也许使用拥有该单元作为容器的UITableViewController?)或者我根本无法使用这个MediaController?

This question是我搜索时最相关的,但它仍然无法解决我的问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果可能的话,我可能会尝试使用具有静态单元格的UITableViewController

如果您使用UIStoryboard拖放UITableViewController并将content更改为Static Cells,那么您需要在单元格中MediaControllerContainer View放入该单元格。然后从Container View拖放到MediaController并设置嵌入字段。

显示时应调用相应的viewLifecycle方法。

以下是UIStoryboard设置 enter image description here

答案 1 :(得分:0)

other answer from aahrens对我来说不起作用,因为我有一个复杂的表视图,而且我从一开始就没有使用故事板。

我最终做的是将UIViewController的弱引用传递给单元格,以便我可以对-addChildViewController:进行“正常”调用。丑陋,但工作正常。