美文网首页iOS 开发继续加油
从一个viewController跳转到storyboard的n

从一个viewController跳转到storyboard的n

作者: figure_ai | 来源:发表于2016-10-11 19:23 被阅读443次
    • 最近做一个练习项目,在做用户引导页的时候需要在播放完引导页之后跳转到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];
    

    相关文章

      网友评论

        本文标题:从一个viewController跳转到storyboard的n

        本文链接:https://www.haomeiwen.com/subject/gdpbyttx.html