首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取对容器视图视图的引用

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

Stack Overflow用户
提问于 2013-09-07 10:58:20
回答 5查看 15.9K关注 0票数 12

我是iOS应用程序开发的新手。我已经连接了一个tableview控制器,这样当我选择其中一个行时,就会使用didSelectRowAtIndexPath获得另一个didSelectRowAtIndexPath。我在这个UIViewController中有一个容器视图,它显示(比如暂时)调用didSelectRowAtIndexPath的行的索引。我想使用segue来完成这个任务,但问题是我不知道如何获得通过使用容器视图形成的视图控制器的引用。我知道您可以使用segue.destinationViewController在prepareForSegue中获得目的视图控制器,但是如何获得由于容器视图而加载的视图控制器的引用。我正在为iOS 6构建应用程序。我也使用了童话板的UI。谢谢

编辑:

这个问题基本上取决于如何获得UIViewController-2的引用,UIViewController-2是由位于UIViewController-1内部的UIContainerView指出的。UIViewController-1是通过选择一行UITableViewController触发的

UITableViewController (选择要给出的行)-> UIViewController-1,contains....ContainerView ->UIViewController-2(与ContainerView关联的ViewController)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-07 15:10:57

好吧,让我们想象一下这个场景:

让我们假设您希望更新“第二个视图控制器的子控件”上的标签,其中模型数据支持您在表视图上单击的单元格。

你能做的是:

  1. 给从第一场景到第二场景的segue一个唯一标识符(例如Detail),在该第二视图控制器中定义一个属性以接收传递给它的值(例如someStringValue),并编写传递该值的prepareForSegue,例如:
  • (prepareForSegue:(UIStoryboardSegue *)segue发送方:(Id)发送方{ if (segue.identifier isEqualToString:@"Detail") { NSIndexPath *indexPath = self.tableView indexPathForSelectedRow;[segue.destinationViewController indexPathForSelectedRow}]
  1. 对嵌入segue重复此过程,即,为嵌入segue赋予它自己的唯一标识符(例如Embed),并在该“第二视图控制器的子视图控制器”视图控制器中创建一个属性,以接收传递给它的值(例如someStringValue),并在第二个视图控制器中设置一个prepareForSegue,将该值传递给其子视图控制器,例如:
  • (prepareForSegue:(UIStoryboardSegue *)segue发送方:(Id)发送方{ if (segue.identifier isEqualToString:@"Embed") { segue.destinationViewController setSomeStringValue:self.someStringValue;}
票数 28
EN

Stack Overflow用户

发布于 2014-06-05 14:35:04

正如其他人所说的,可以重写prepareForSegue来定位子视图控制器--就我个人而言,我更喜欢使用UIViewController.childControllers,因为除了嵌入式segue发生时,您还可以访问该控件。

代码语言:javascript
复制
-(void)viewDidLoad {
    for (UIViewController* vc in self.childViewControllers) {
            if ([vc isKindOfClass:MyChildController.class]) {
               // do something here
            }
    }
}

不是建议您这样做,但是如果您正在使用情节提要,则childControllers数组的顺序与接口构建器中的顺序完全相同,因此可以直接引用childViewControllers,1

票数 4
EN

Stack Overflow用户

发布于 2013-09-07 11:08:27

关于prepareForSegue,你是对的。destinationViewController将为您提供目标视图控制器。

我不明白你为什么还需要别的东西。如果您希望目标控制器包含另一个控制器(为什么?),您可以给目标控制器一个指向该控制器的@property,您可以读取和设置这个属性。

但问题依然存在--你为什么要这么做?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18672590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档