使用故事板来导航一组复杂的视图,展开segue是不够的

时间:2013-04-18 14:29:42

标签: ios storyboard uistoryboard uistoryboardsegue

enter image description here我的故事板看起来像附图。

这个想法是有三个纵向视图,显示当前消耗,用户可以通过向左滑动来导航。我正在使用左滑动手势识别器。然后我添加右滑动手势识别器,然后连接到展开segue返回。这很好。

订单是[电力和电力;气体] - > [电] - > [气体]。

每个纵向视图都有相应的横向细节视图。这些也被设置为使用户可以通过滑动导航,并且我展开segue以便他们可以向后滑动。再次订单是[两个图表] - > [电力图] - > [气图]。

我还希望用户能够通过旋转设备从任何纵向视图移动到相应的详细视图。我发现每个肖像控制器中的旋转,并以编程方式执行segue,如此(对于气体)。 (注意代码对于正确的方向还不健壮,而我只是在试验。)

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)aToInterfaceOrientation duration:(NSTimeInterval)aDuration {

    [self performSegueWithIdentifier: @"SegueGasToLandscape" sender:self];
} 

因此,例如,用户可能会滑动两次以查看气体纵向页面,然后旋转设备以查看气体消耗的详细图表。

从这里,我希望用户能够向右滑动以查看电力细节图,然后再向右滑动以查看两者 - 但这不会发生,因为执行此操作的方法是放松未发生的滑动。 (事实上​​,景观电力视图控制器此时甚至没有实例化。)

我认为我需要的不是使用展开segues,而是使用普通的segues。但是我想这样做而不为现有控制器创建新的实例化(如展开segues那样),但是如果需要则创建一个新的实例化(因为unwind segues不会)。

如果重要,我很乐意为iOS 6.1及更高版本编写代码。

有没有人这样做过?

1 个答案:

答案 0 :(得分:0)

听起来你想使用InstantiateViewControllerWithIdentifier:别忘了设置接收视图控制器的Storyboard ID。

if (!self.homeVC)
{
    self.homeVC = [self.storyboard instantiateViewControllerWithIdentifier:@"homeView"];
    [self presentViewController:self.homeVC animated:YES completion:nil];
}