2014-03-19 43 views
0

我有一个视图需要在横向和纵向视图中呈现。 我用这个解决方案提供方向: Solution for orientation in Storyboard在容器视图的故事板中的取向不加载segues目标视图控制器

所以现在我的看法是这样的: enter image description here

选择的观点是的ViewController,有两种观点的观点:第一种是纵向视图,第二个是风景视图。 我隐藏不符合设备方向的视图。

就像在图像中一样,纵向和横向的视图都具有Container视图,通过segue链接到视图控制器。 据我的理解,故事板应该在加载主视图控制器时调用所有的segues。我正在通过prepareForSegue方法得到Segue电话。

如果纵向视图保留在横向视图之前,则从“纵向视图”中为段落首先调用prepareForSegue,其中我将目标视图控制器保存在对象中。然后进入“风景视图”的赛段。但是,当调用横向视图segues时,纵向分段的目标视图控制器变为nil(保存在全局对象中)。

为什么会发生这种情况,以及如何解决此问题,以便所有容器视图都能正确加载。

EDIT

为赛格瑞方法制备: - (无效)prepareForSegue:(UIStoryboardSegue *)赛格瑞发件人:(ID)发送方 { 的NSString * segueName = segue.identifier;

if ([segueName isEqualToString: @"ChartEmbedSegue"]) 
{ 
    self.chartViewController = (ChartViewController *) [segue destinationViewController]; 
    self.chartViewController.dataSource = [[ServiceManager sharedInstance] dataSource]; 
    self.chartViewController.view.frame = self.chartContainerView.bounds; 
} 
else if ([segueName isEqualToString: @"LandscapeChartEmbedSegue"]) 
{ 
    self.landscapeChartViewController = (ChartViewController *) [segue destinationViewController]; 
    self.landscapeChartViewController.dataSource = [[ServiceManager sharedInstance] dataSource]; 
    self.landscapeChartViewController.view.frame = self.chartContainerView.bounds; 
} 
else if ([segueName isEqualToString: @"SummaryControllerEmbedSegue"]) 
{ 
    self.summaryViewController = (SummaryViewController *) [segue destinationViewController]; 
    self.summaryViewController.data = self.data; 
    self.summaryViewController.view.frame = self.summaryView.bounds; 
} 
else if ([segueName isEqualToString: @"LandscapeSummaryControllerEmbedSegue"]) 
{ 
    self.landscapeSummaryViewController = (SummaryViewController *) [segue destinationViewController]; 
    self.landscapeSummaryViewController.data = self.data; 
    self.landscapeSummaryViewController.view.frame = self.landscapeSummaryView.bounds; 
} 
} 
+0

显示您为segue做准备。 PrepareForSegue对每个segue调用一次,如果你在每次传递中设置你的全局变量或属性,其中一些将根据它们被调用的顺序变为零。你可以通过懒惰地设置指针来克服这个问题。 –

+0

@MartinKoles请参阅编辑 –

+0

PrepareForSegue你张贴好看在设置属性方面。在哪里你有'nil' destinationViewController的问题? –

回答

0

Oops..My坏,发布这个问题后,我意识到,我并没有设置一个重要的财产,因此没有数据到来。

有时候,只要重新思考问题就可以解决问题。

版主:我应该删除这个问题吗?

@MartinKoles感谢您的支持。

相关问题