我的故事板的相关部分如下所示: 您可以看到自定义“容器控制器”视图包含两个容器视图,一个通过嵌入式 segue 链接到导航控制器,另一个链接到自定义“主视图控制器”(其中通过嵌入式 segue 实现表视图控制器。导航控制器组件还与自定义的“位置过滤器控制器”有关系。
我需要实现委托,以便当位置过滤器控制器中的 UISteppers 之一是 incr./decr. 时,主视图控制器中的表视图知道相应地更新它显示的数据。
我并不是不习惯使用协议/代表,但是这种在 segues 中的视图之间进行对话的独特情况真的在欺骗我!在大多数情况下,我在以下示例中取得了成功:在视图控制器之间传递数据。但是,在这种情况下,我无法直接链接实例化视图,正如他在“传回数据”步骤 6 中所指示的那样。
我曾考虑使用一个单例对象,每个视图都可以从中获取/设置必要的数据,但这里的问题是表视图不一定知道何时更新其内容,尽管它有可以/应该更新的数据.
这是来自 ContainerController.m 的代码片段,我在其中设置了嵌入式 segue 以使其正常工作:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
DataHold *data = [[DataHold alloc] init]; // <-- this actually is a singleton object
if([segue.identifier isEqualToString:@"locationEmbedSegue"])
{
}
else if([segue.identifier isEqualToString:@"tableEmbedSegue"])
{
[[segue destinationViewController] setDelegate:data.detailTableViewController];
// ^ This part actually sets up a delegate so that the table view (Master View Controller)
// delegates to the detail view controller of the overarching split view controller
// and tells it what to display when a row is pressed.
}
}
谢谢你的帮助!