2016-03-12 60 views
2

所以我见过一些这样的例子,并试图实现它们,但似乎无法让它工作。我有两个VC(在我的照片中标记为VC1)转到第二个视图控制器(照片中的VC2)。 VC2有一个容器视图。我将数据从VC1上的属性传递给VC2上的属性,然后我需要将该数据从V2传递给容器视图上的属性。基于使用某些NSLogs,看起来为从我的容器视图进入VC2的嵌入式segue准备的segue在VC2上的属性由VC1传递的数据设置之前触发,这意味着没有数据传递给我的容器视图。任何方式来解决这个问题?提前致谢。从父视图传递数据到容器视图

这是我在prepareForSegue VC2:

我的容器视图是WineryPhotosCVC。我正在尝试将WineryPhotosCVC的酿酒厂物业与VC2s酒庄物业联系起来。在prepareForSegue到我的容器视图被调用之前,VC1并未由VC1设置VC2s酒庄属性。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

if ([segue.identifier isEqual: @"containerViewSegue"]) { 
    WineryPhotosCVC *wineryPhotosCVC = segue.destinationViewController; 
    wineryPhotosCVC.winery = _winery; 
    } 
} 

enter image description here

回答

0

您将需要对容器视图的引用来修改和访问它。因此,将其添加到VC2的viewWillAppear中(发生在prepareForSegue之后,将数据传递给VC2),您只需直接设置容器的属性或使用容器VC上的函数configure(someDataStructure: DataStructure)

+0

我尝试添加对我的容器视图的引用,并将其添加到viewWillAppear,但数据仍然不会通过。这是我在VC2的viewWillAppear中的代码:'wineryPhotosCVC.winery = self.winery;'你可以通过在容器视图中设置一个函数来进一步解释你的意思吗?谢谢 – dcotter

+0

这应该工作。设置断点并在设置时检查酒庄。另外,即使你设置了它,你想在容器视图中使用它做什么?查看容器视图的委托方法,看看它是否有可用的酒厂数据。 – jarryd

+0

GOT IT!谢谢您的帮助。问题是我对容器视图控制器的引用。我最后通过'WineryPhotosCVC * wineryPhotosCVC = self.childViewControllers [0];'得到了参考。然后我做了'wineryPhotosCVC.winery = self.winery;'酒庄属性有一个id,我需要传递给在我的容器视图中进行的网络调用以从Foursquare抓取照片。我感谢你的帮助。 – dcotter

0

,你可以保存容器视图在VC2的参考和传递数据时,它有VC2在didSet方法可能。

+0

你能否举一个例子,因为我试过这样做:' - (void)setWinery:(Winery *)winery { _winery = winery; self.wineryPhotosCollectionViewController.winery = winery; }'然后在我的视图中调用它会出现。我也尝试过'wineryPhotosVCVC.winery = self.winery;'在我的VC2 viewWillAppear中,但那不起作用。 'wineryPhotosVCVC'是我的容器视图。 – dcotter

相关问题