获取对容器视图视图的引用

Roa*_*ock 12 objective-c uiviewcontroller ios segue uistoryboardsegue

我是iOS App Development的新手.我连接了一个tableview控制器,这样当我选择其中一行时,我会使用didSelectRowAtIndexPath获得另一个UIViewController.我在这个UIViewController中有一个容器视图,它显示(当然是)调用didSelectRowAtIndexPath的行的索引.我想用segue来做这个,但问题是我不知道如何获得对使用容器视图形成的视图控制器的引用.我知道你可以在prepareForSegue中使用segue.destinationViewController获取目标View Controller但是如何获得对由于容器视图而将加载的视图控制器的引用.我正在构建适用于iOS 6的应用程序.此外,我还使用了Storyboard作为UI.谢谢

编辑:

这个问题基本上归结为如何获得UIViewController-2的引用,该引用由UIVonConiner-1内部的UIContainerView指向.通过选择一行UITableViewController来触发UIViewController-1

UITableViewController(选择要给出的行)---> UIViewController-1,其中包含.... ContainerView ---> UIViewController-2(与ContainerView关联的ViewController).

Rob*_*Rob 28

好吧,让我们想象一下这种情况:

故事板

我们假设你想要更新"第二个视图控制器的子节点"上的标签,其中模型数据支持你在表格视图上点击的单元格.

你能做的是:

  1. 给第一个场景中的segue提供一个唯一标识符(例如Detail),在第二个视图控制器中定义一个属性以接收传递给它的值(例如someStringValue),然后写一个prepareForSegue传递值的值,例如:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([segue.identifier isEqualToString:@"Detail"])
        {
            NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
            [segue.destinationViewController setSomeStringValue:self.objects[indexPath.row]];
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 对你的embed segue重复这个过程,即给你的嵌入segue自己的唯一标识符(例如Embed)并在"第二视图控制器的子视图"视图控制器中创建一个属性来接收传递给它的值(例如someStringValue),并且有一个prepareForSegue在第二个视图控制器中,将值传递给其子视图控制器,例如:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([segue.identifier isEqualToString:@"Embed"])
        {
            [segue.destinationViewController setSomeStringValue:self.someStringValue];
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)