如何跳转至一个storyboard中指定的viewcontroller,也可以跳转至一个指定的navigationController

最近做一个页面跳转,跳转关系非常跳跃,不连续,而且还要在不同的navigationController之间做跳转,一时头大,但最终还是找到方法解决了,特此记录一下:

1,首先获得当前工程的storyboard文件,方法如下

       

UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];


2,拿到带有指定标签的viewcontroller:

        这个需要在storyboard中设置一下将要跳转到的页面的id,在storyboard可以找到这个设置,填一个id即可

        UIViewControllerController *view = [story instantiateViewControllerWithIdentifier:@"viewID"];


3,最后做一下跳转即可:

[self presentViewController:view animated:YES completion:nil];


这样跳过去的页面,会完整保留storyboard种定义的外观以及被弹出页面与其他storyboard中页面的跳转关系,

还有对应的xib文件中定义的空间布局,不会丢失任何信息,但如果是用代码new出来或者alloc一个想要跳转过去的ViewController,

然后再push出来,那么弹出来的页面就会丢失xib文件的布局和storyboard定义的页面关系。完全是一个新的页面实例,

不带有任何storyboard和xib的内容,无法实现想要的效果。

最关键的是由于UINavigationController是继承自UIViewController的,

所以这个方法还可以跳转至storyboard中带有指定id的UINavigationController上,

这样就可以实现从一个UINavigationController的某个界面跳至另外一个UINavigationController的根页面上,

也就是可以在两个storyboard中摆放的UINavigationController之间进行跳转

你可能感兴趣的:(iOS,storyboard,页面跳转)