我如何将数据从我的ViewController传递到容器视图?

我有一个故事板在XCode中设置,并有一个MainViewController。 在MainViewController中,我添加了一个ContainerView,它自然会与另一个VIewController创build一个Segue。

在我的MainViewController.m文件中,我已经build立了数据,并希望将这些数据链接到ContainerView中的一个标签,但我想我可以点击文件的所有者,这样做,但我当然不能,因为他们是2个不同的viewcontrollers 。

有人可以帮助我,因为我正在为此而苦苦挣扎。 必须有一个简单的方法,但我不能破解它!

谢谢

您可以像使用其他两个控制器一样使用prepareForSegue – 在两个控制器实例化之后,但在任何一个viewDidLoad运行之前调用该方法。 另一种方法是使用父控制器的childViewControllers属性(embedded式控制器是一个孩子)。 所以,这个孩子将会是self.childViewControllers [0]。

编辑后:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"EmbedSegue"]) { MyEmbeddedController *embed = segue.destinationViewController; embed.labelString = self.stringToPass; } } 

当然,你必须改变你的名字。 确保你在IB中给你的名字和你在if语句中检查的名字一致。 在这个例子中,labelString是您在embedded式控制器中设置的string属性。 然后在该控制器的viewDidLoad方法中,可以使用该string设置标签的值。

这个和rdelmar的只有在Swift中的答案几乎一样。

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let embeddedVC = segue.destinationViewController as? MyEmbeddedController where segue.identifier == "EmbedSegue" { embeddedVC.labelString = self.stringToPass } } 

"EmbedSegue"具有在Interface Builder中设置的segue标识符。

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Make sure your segue name in storyboard is the same as this line if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) { // Get reference to the destination view controller YourViewController *vc = [segue destinationViewController]; // Pass any objects to the view controller here, like... [vc setMyObjectHere:object]; } } 

我也应该提到,因为你正在使用Container视图,所以当你展示持有Container的ViewController时,会触发prepareForSegue