从文档:
您创建的每个自定义视图控制器对象都负责管理单个视图层次结构中的所有视图。
您要做的是将一个视图控制器的视图添加为另一个视图控制器视图的子视图,从而混合两个视图层次结构。这会给你带来你已经经历过的问题。看看 Carbon Emitter 的Abusing UIViewCtrollers文章,它给出了详尽的解释和替代方案。
更新
正如上面正确答案中所建议的那样,有一种方法可以使一个 UIViewController 充当另一个 UIViewController 的容器。从实现容器视图控制器(UIViewController 类参考):
A custom UIViewController subclass can also act as a container view controller. A container view controller manages the presentation of content of other view controllers it owns, also known as its child view controllers. A child’s view can be presented as-is or in conjunction with views owned by the container view controller.
However, this is an iOS >= 5 feature, so my answer will remain correct for applications running iOS versions < 5.