iOS开发中界面跳转是必不可少的一个功能,一个完整的App必然是由多个界面组成的。我在这篇博客中将会较为全面的讲解在是否有导航的情况下进行跳转以及返回,并且对modal、push、custom等视图做一个介绍。代码我已经上传至:https://github.com/chenyufeng1991/NavigationTest 。 之前我也写过一篇关于导航栏的博客《iOS纯代码实现界面建立、跳转、导航栏、(无storyboard,无nib)》。大家也可以进行参考。
个人建议,如果你的项目已经确定要使用storyboard的情况下,可以自动在storyboard中生成导航栏,并且界面的跳转都可以通过pushViewController这种方式来实现。这样可以大大提高效率和减少代码量,也是目前苹果提倡的方式。
但是如果是在团队项目开发中,可能有人会有顾忌,就是怕大家一起操作storyboard,会导致各种冲突,所以退而求其次,选用了xib来构建界面。这也是没有问题的,我今天将会来实现使用代码导航栏和不同的视图的跳转。
下面我列出界面跳转中最常用14个情况,并给出了该方法是否可行。
(1)storyboard生成ViewController并添加按钮+代码生成navigationController+使用pushpushViewController跳转到另一个storyboard生成的ViewController;-->该按钮无法点击,无法进行跳转;
(2)storyboard生成ViewController并添加按钮+代码生成navigationController+使用presentViewController跳转到另一个storyboard生成的ViewController;-->该按钮无法点击,无法进行跳转;
(3)storyboard生成ViewController并添加按钮+storyboard中Action Segue使用push跳转到另一个storyboard生成的ViewController;-->报错,无法跳转,提示:“Push segues can only be used when the source controller is managed by an instance of UINavigationController.”;
(4)storyboard生成ViewController并添加按钮+storyboard中Action Segue使用modal跳转到另一个storyboard生成的ViewController;-->正常,可以进行跳转;
(5)storyboard生成ViewController并添加按钮+storyboard中在第一个ViewController中生成导航栏+storyboard中Action Segue使用push跳转到另一个storyboard生成的ViewController;-->正常,可以进行跳转,并可以使用导航栏自带的返回按钮返回上一个页面;
(6)storyboard生成ViewController并添加按钮+storyboard中在第一个ViewController中生成导航栏