获取容器VC而不是视图

我有点困惑容器如何工作。 我有容器: 在这里输入图像说明

而我尝试在我的MainViewControllerpipe理这个。 但是,当我控制 – 拖到我的.h文件我越来越

 @property (weak, nonatomic) IBOutlet UIView *liveContainer; 

为什么这是一个UIView类? 这意味着这是self.view我的BaseButtonContainerView ? 但我有BaseButtonContainerViewController ,并在debugging中,我看到viewDidLoad被调用。 我可以从MainViewController访问BaseButtonContainerViewController方法吗?

故事板喜欢在prepareForSegue做所有事情,所以只需指定一个标识符即可。 在这种情况下,我们假设您将其设置为IB中的baseButtonContainerSegue 。 然后在prepareForSegue使用:

 - (void) prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"baseButtonContainerSegue"]) { self.liveContainer = segue.destinationViewController; } } 

只要确保你有一个UIViewController属性的liveContainer ,(特别是在你的情况下,你会想要一个BaseButtonContainerViewController属性)。 我不确定你为什么要这样做,但我猜测它与内存pipe理有关。 说你离开那个屏幕,你的容器被释放。 那么当你回去的时候,你可能会失去与他们的联系。 这样赛格会再次被调用,你可以抓住它们作为属性。 再次,我不确定,所以如果别人请赐教!

embedded在容器视图中的控制器是MainViewController的子视图控制器,因此您可以使用self.childViewControllers访问它们。 这将给你一个你所有的孩子的数组,所以你必须使用objectAtIndex:来到任何一个特定的控制器。 容器视图只是普通的UIViews。 故事板只是为您设置子视图控制器的工作。 你得到的是一样的,如果你已经使用自定义容器控制器API来自己添加代码(使用addChildViewController:和didMoveToParentViewController :,然后将子视图添加到self.view或self.view子视图) 。