我有一个可重复使用的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是我搜索时最相关的,但它仍然无法解决我的问题。
谢谢!
答案 0 :(得分:1)
如果可能的话,我可能会尝试使用具有静态单元格的UITableViewController
。
如果您使用UIStoryboard
拖放UITableViewController
并将content
更改为Static Cells
,那么您需要在单元格中MediaController
将Container View
放入该单元格。然后从Container View
拖放到MediaController
并设置嵌入字段。
显示时应调用相应的viewLifecycle方法。
以下是UIStoryboard
设置
答案 1 :(得分:0)
other answer from aahrens对我来说不起作用,因为我有一个复杂的表视图,而且我从一开始就没有使用故事板。
我最终做的是将UIViewController
的弱引用传递给单元格,以便我可以对-addChildViewController:
进行“正常”调用。丑陋,但工作正常。