我有一个视图需要在横向和纵向视图中呈现 . 我使用此解决方案提供方向:Solution for orientation in Storyboard
所以现在我的观点是这样的:
所选视图是ViewController的视图,它有两个视图:第一个是纵向视图,第二个是横向视图 . 我隐藏了不符合设备方向的视图 .
与图像一样,两个视图,纵向和横向都有容器视图,通过segue链接到视图控制器 . 根据我的理解,Storyboard应该在加载主视图控制器时调用所有segue . 我正在 prepareForSegue
方法接到Segue的电话 .
如果纵向视图保留在横向视图之前,则首先为"Portrait view"中的segue调用 prepareForSegue
,其中我将目标viewController保存在对象中 . 然后为"Landscape View"的segues . 但是,当调用Landscape视图segues时,Portrait Segues的目标viewController变为 nil
(保存在全局对象中) .
为什么会发生这种情况,我该如何解决这个问题,以便正确加载所有容器视图 .
EDIT
准备segue方法: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {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;
}
}
1 回答
哎呀 . 我发现这个问题之后,我意识到,我没有设置一个重要的属性,因此没有数据出现 .
有时,只需重新思考问题就可以解决问题 .
主持人:我应该删除这个问题吗?
@MartinKoles感谢您的支持 .