我是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)。
发布于 2013-09-07 15:10:57
好吧,让我们想象一下这个场景:

让我们假设您希望更新“第二个视图控制器的子控件”上的标签,其中模型数据支持您在表视图上单击的单元格。
你能做的是:
Detail),在该第二视图控制器中定义一个属性以接收传递给它的值(例如someStringValue),并编写传递该值的prepareForSegue,例如:Embed),并在该“第二视图控制器的子视图控制器”视图控制器中创建一个属性,以接收传递给它的值(例如someStringValue),并在第二个视图控制器中设置一个prepareForSegue,将该值传递给其子视图控制器,例如:发布于 2014-06-05 14:35:04
正如其他人所说的,可以重写prepareForSegue来定位子视图控制器--就我个人而言,我更喜欢使用UIViewController.childControllers,因为除了嵌入式segue发生时,您还可以访问该控件。
-(void)viewDidLoad {
for (UIViewController* vc in self.childViewControllers) {
if ([vc isKindOfClass:MyChildController.class]) {
// do something here
}
}
}不是建议您这样做,但是如果您正在使用情节提要,则childControllers数组的顺序与接口构建器中的顺序完全相同,因此可以直接引用childViewControllers,1
发布于 2013-09-07 11:08:27
关于prepareForSegue,你是对的。destinationViewController将为您提供目标视图控制器。
我不明白你为什么还需要别的东西。如果您希望目标控制器包含另一个控制器(为什么?),您可以给目标控制器一个指向该控制器的@property,您可以读取和设置这个属性。
但问题依然存在--你为什么要这么做?
https://stackoverflow.com/questions/18672590
复制相似问题