假设您知道建立委托方法的方法(@protocol,请参阅此处的链接),关键元素将是在加载容器时抓取嵌入在容器中的两个 viewController,将主 viewController 设置为委托,并在发生某些事情时发送消息变化。对于初学者,如果通信需要在控制器之间双向流动,请为每个 VC 设置一个实例变量。
给定 VCPrime、CollectionVC 和 TableVC:
首先,在故事板中,为每个 segue 命名(从 containerViews 到 VCs)。在 VCPrime 中,实现 prepareForSegue:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"collection"]) {
self.collectionVC = (CollectionVC *)[segue destinationViewController];
self.collectionVC.delegate = self;
}
if ([segue.identifier isEqualToString:@"table"]) {
self.tableVC = (TableVC *)[segue destinationViewController];
self.tableVC.delegate = self;
}
}
您还必须在 VCPrime 中实现委托方法,并声明CollectionDelegate, TableDelegate
或命名它们。
在 CollectionVC 中,当有人选择某物(或其他)时,检查委托是否响应了您的委托方法,然后发送该消息:
if ([self.delegate respondsToSelector:@selector(doSomething)]) [self.delegate doSomething];
然后在被调用的方法中改变 TableVC。
这只是一个简短的概述。互联网上有很多很棒的代码示例。