0

I'm a little confused how containers works. I have containers: enter image description here

And i try to manage this in my MainViewController. But when i control-drag it into my .h file i'm getting

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

Why this is an UIView class? This mean that is self.view my BaseButtonContainerView? But I have BaseButtonContainerViewController, and in debug i see that viewDidLoad is called. Can i get access to BaseButtonContainerViewController methods from MainViewController?

4

2 回答 2

2

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

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

只要确保你有一个UIViewControllerproperty liveContainer,(特别是在你的情况下你想要一个BaseButtonContainerViewControllerproperty)。我不确定你为什么必须这样做,但我猜它与内存管理有关。假设您离开该屏幕并且您的容器被释放。然后当你回去时,你可能会失去与他们的联系。这样,segues 将被再次调用,您可以将它们作为属性获取。同样,我不确定,所以如果其他人确实请赐教!

于 2013-06-05T14:09:48.347 回答
0

容器视图中嵌入的控制器是 MainViewController 的子视图控制器,因此您可以使用 self.childViewControllers 访问它们。这将为您提供所有孩子的数组,因此您必须使用 objectAtIndex: 来访问任何一个特定的控制器。容器视图只是普通的 UIView。故事板只是为您设置子视图控制器的工作。您得到的结果与您使用自定义容器控制器 api 在代码中自己添加子项相同(使用 addChildViewController: 和 didMoveToParentViewController:,然后将子项的视图添加到 self.view 或 self.view 的子视图) .

于 2013-06-05T14:28:51.263 回答