从一个viewController跳转到storyboard的navigationViewController

  • 最近做一个练习项目,在做用户引导页的时候需要在播放完引导页之后跳转到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];
  • 参考文章
  • 纯代码跳转到xib界面以及storyboard界面;
  • 如何跳转至一个storyboard中指定的viewcontroller,也可以跳转至一个指定的navigationController;

你可能感兴趣的:(从一个viewController跳转到storyboard的navigationViewController)