首页 文章

故事板中的方向与容器视图不加载segues目标视图控制器

提问于
浏览
0

我有一个视图需要在横向和纵向视图中呈现 . 我使用此解决方案提供方向:Solution for orientation in Storyboard

所以现在我的观点是这样的:
enter image description here

所选视图是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 回答

  • 0

    哎呀 . 我发现这个问题之后,我意识到,我没有设置一个重要的属性,因此没有数据出现 .

    有时,只需重新思考问题就可以解决问题 .

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

    @MartinKoles感谢您的支持 .

相关问题