Ios 如何在xcode情节提要中链接ViewController?
我希望在xcode情节提要中链接视图控制器,以实现以下效果: A->B->C->D->E->B->C->D->E->B-> 其中,上述字母表示单独的视图控制器(全尺寸场景)。当我在视图之间切换时,我希望有一个从右到左的水平滑动序列,并且我不希望或不需要保留以前视图的状态(即无推送或模式序列)。不过,我确实需要在视图之间转移一些状态Ios 如何在xcode情节提要中链接ViewController?,ios,uiviewcontroller,xcode4.5,uistoryboard,uistoryboardsegue,Ios,Uiviewcontroller,Xcode4.5,Uistoryboard,Uistoryboardsegue,我希望在xcode情节提要中链接视图控制器,以实现以下效果: A->B->C->D->E->B->C->D->E->B-> 其中,上述字母表示单独的视图控制器(全尺寸场景)。当我在视图之间切换时,我希望有一个从右到左的水平滑动序列,并且我不希望或不需要保留以前视图的状态(即无推送或模式序列)。不过,我确实需要在视图之间转移一些状态 关于如何最好地使用故事板编辑器、代码或两者的组合来实现这一点,有什么建议吗?我有几个选择: 与旧版本iOS具有最大向后兼容性的最简单解决方案是使用导航控制器,在某处保
关于如何最好地使用故事板编辑器、代码或两者的组合来实现这一点,有什么建议吗?我有几个选择:
B
的引用,然后您可以在E
上使用一些执行以下操作的iAction
:
[self.navigationController popToViewController:B animated:YES];
在这个模型中,除了从E
到B
的序列外,所有的序列都将在故事板中表示,对于这一序列,您将在i动作
(或其他)中使用上述代码unwind
segue。在这个场景中,所有的片段都将出现在故事板中。但是我们中的许多人还不愿意放弃iOS 5的兼容性,所以也许你不想考虑这个解决方案。但是,如果您确实想使用展开序列,您只需在B
中定义一个展开操作,例如:
- (IBAction)backToB:(UIStoryboardSegue *)segue
{
// if you need to do any UI update because we got an unwind segue
// back to this controller, do that here
}
一旦你在B
中有了这个放松动作,你会突然在IB中出现一个新的segue类型,名为backToB
(不过,我建议你给它一个更好的名称),你可以用它从E
转到B
。显然,所有其他推送序列都会像往常一样出现在故事板中ParentVC
,并且a
到E
将是子控制器。然后,您可以使用自定义分段通过子控制器序列进行转换B
时,它将以编程方式立即在viewdiload
[self presentViewController:A animated:NO];
虽然B
是根视图控制器,但感觉就像A
是。当A
完成时,它将返回到B
,此时您可以执行标准B
-C
-D
-E
推序列,但因为我们制作了B
根控制器,E
只需执行popToRootViewControllerAnimated
即可返回B
,您无需担心将指向B
的指针保留在周围。如果a
是一个登录控制器或启动屏幕,或者是一些不正常的流程,那么这个模型就很有意义其中,1可能是最简单的,2可能被认为是最优雅的(尽管你失去了iOS 5和更早版本的支持),3是一个选项,如果你不介意编写更多的(复杂的)代码,内存使用是至关重要的,4,像1,是相当容易的,但这只是一个流程是否对你的应用程序有意义的问题。就个人而言,我倾向于选择1或4,这取决于视图控制器
A
是什么。如果需要iOS4兼容性,这两个选项也可以用于NIB 除了顶部的导航外,选项4看起来不错。使用属性或代码是否有一种简单的方法隐藏导航控制器在每个后续视图顶部引入的导航?@philipfc In code:[self.navigationController setNavigationBarHidden:YES动画:NO]代码>在B的viewDidLoad
中。您可能还需要转到情节提要,单击导航控制器,转到“属性检查器”(最右侧面板上的第四个选项卡),转到“模拟度量”,然后关闭“顶栏”。这并没有取代setNavigationBarHidden
代码,但如果您知道场景的实际外观,那么只会使场景设计更容易。如果你在导航控制器上这样做的话,模拟的指标会在所有的场景中传播,这很好地结合在一起。我在测试时所做的唯一更改是取消选中导航控制器属性检查器中的“显示导航栏”,这似乎消除了在代码中隐藏导航栏的需要。@philipfc我不知道这个选项,但它非常有意义。谢谢