展开细分与前进细分不同,这使得支持后续功能非常简单。
在创建展开segue之前,您需要向视图控制器添加一个方法,以便将其展开。例如 -
- (IBAction)unwindFromLogin:(UIStoryboardSegue*)sender {
}
(如果要触发与performSegueWithIdentifier
开卷或场景中的UIViewController对象),并在退出图标即可创建按Ctrl拖动场景中的物体之间的开卷SEGUE屏幕的底部。然后界面生成器将显示它找到的符合上述签名的方法列表(因此它将显示unwindFromLogin:
)。你可以给这个segue一个标识符,这样你可以像平常一样用performSegueWithIdentifier
来调用它。到现在为止还挺好。
现在,为聪明的一点。在运行时,调用unwind segue时,iOS将通过当前视图控制器堆栈查找实现指定方法的第一个视图控制器 - 因此,如果在每个视图控制器中实现相同的unwindFromLogin:
方法,则您的登录视图将展开为它来自的视图控制器,你只需要在你的登录视图控制器场景中放置一个简单的细节。
Apple有一个很好的Tech Note,它更详细地描述了展开过程,以及如何通过在UIViewController
子类中实现其他方法来定制它,但默认实现应该适合您的需求。
如果你不想创建从每个源视图控制器登录视图控制器赛格瑞你可以直接使用类似目前它 -
LoginViewController *loginVC=(LoginViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
[self presentViewController:loginVC animated:YES completion:nil];
你仍然可以使用回卷SEGUE找回
谢谢你们的全面解答。谜题仍然缺少的是,我如何实现从每个屏幕到登录屏幕的导航?我是否必须从每个场景向登录场景建立IB连线,还是有一种更容易的,程序化的方式将这种行为构建到场景中? – 2015-01-20 22:05:58