-
最近做一个练习项目,在做用户引导页的时候需要在播放完引导页之后跳转到navigationViewController
-
实现代码如下:
//1,首先获得当前工程的storyboard文件,方法如下:
UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
//2,拿到带有指定标签的viewcontroller:
这个需要在storyboard中设置一下将要跳转到的页面的id,在storyboard可以找到这个设置,填一个id即可
LCHMyNavigationController *nvc = [story instantiateViewControllerWithIdentifier:@"LCHNAVCONTROLLER"];
//3,最后做一下跳转即可:
[self presentViewController:nvc animated:YES completion:nil];
这样跳过去的页面,会完整保留storyboard种定义的外观以及被弹出页面与其他storyboard中页面的跳转关系,
还有对应的xib文件中定义的空间布局,不会丢失任何信息,但如果是用代码new出来或者alloc一个想要跳转过去的ViewController,
然后再push出来,那么弹出来的页面就会丢失xib文件的布局和storyboard定义的页面关系。完全是一个新的页面实例,
不带有任何storyboard和xib的内容,无法实现想要的效果。
最关键的是由于UINavigationController是继承自UIViewController的,
所以这个方法还可以跳转至storyboard中带有指定id的UINavigationController上,
这样就可以实现从一个UINavigationController的某个界面跳至另外一个UINavigationController的根页面上,
也就是可以在两个storyboard中摆放的UINavigationController之间进行跳转。
- 附:其他跳转到storyboard和xib的方式
//1,跳转到xib 假设有一个按钮,这个按钮就是实现跳转的,那么在这个按钮的点击事件中,代码可以这样写。
AViewController *a1= [[AViewController alloc]initWithNibName:@”AViewController” bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:a1 animated:YES];
//2,跳转到storyboard 如上,代码可以这样写
UIStoryboard *sb=[UIStoryboard storyboardWithName:@”A” bundle:nil];
[self presentViewController:[sb instantiateInitialViewController] animated:YES completion:nil];
网友评论