zoukankan      html  css  js  c++  java
  • 动态加载故事storyboard

       第一种方法:


        ViewControllerB *vcB = [self.storyboard instantiateViewControllerWithIdentifier:@"Name of View Controller B"];   
        
        [vcB setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
        [viewControllerA presentModalViewController:(UIViewController *)vcB animated:YES];

    接上一篇,通过学习上一篇,我们知道,XIB文件可以动态加载视图,同样功能强大的StoryBorad,更能出色地完成这一重任。此外其加载视图的方式,有了更多的选择,颇具有灵活性。

    在storyBorad中可以结合XIB 文件使用,当然也可以动态地加载XIB 文件视图,这个与在XIB文件中动态加载是一样的,不熟悉的,可以看看我的上一篇博文。

    直接进入正题,创建一个

    勾选StoryBorad

    //创建如下图所示的界面文件,注意最后一个并没有连接Segue,我们要手动地在程序中动态地加载这个界面文件

    首先:我们先看一下XIB文件和storyborad中,一个UIViewControlelr 在其中显示的形态有什么不同,以及一些设置。

    先看XIB中

    再看StoryBorad中

    细心的人会发现,两个有一些细微的差别,刚开始学习的时候,没有注意到,或者是,注意到了,也不知道怎么使用,在storyborad中将NIB Name 替换成了Indentifier ,并且增加了一个 Initial Sence 选项,这个大家都明白.对于

    Indentifier,就是我们今天动态加载视图中的一个重要属性标识。

    好了,前期准备完毕,在storyborad中动态加载视图,用到的一个类是显而易见

    UIStoryboard Class Reference

    Getting a Storyboard Object
    + storyboardWithName:bundle: //获得特定的storyBorad
    Instantiating Storyboard View Controllers
    – instantiateInitialViewController //返回初始化场景的controller
    – instantiateViewControllerWithIdentifier: //返回指定的controller

    相信这回大家该恍然大悟了,我们使用– instantiateViewControllerWithIdentifier:就可以获得我们想要的任何UIViewController ,从而可以动态地加载。要注意在那个Indentifier选项中要标记好名字。

    //简单演示一下,抛砖引玉吧,

    - (IBAction)shoudong:(id)sender {
        
        NSLog(@"function %s line=%d",__FUNCTION__,__LINE__);
        UIViewController *con=[[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"dongtai"]; //获得控制器
        
        [self.navigationController pushViewController:con animated:YES]; // 加载控制器
        
        
    }

    点击动态加载按钮,看正确显示我们的下一个视图,这里只是demo ,实际可以根据需要在特定场景加载特定的视图,十分灵活,功能也十分强大。



    总结:通过使用Interface Builder动态地加载视图,更加熟悉了IB的使用,加深了印象,同时也提高了程序处理的灵活性。为以后探索更加高级的应用打下了基础。不断研究,不断总结,就会更快地进步。如有问题,欢迎留言交流。

    写在后面:此时动态加载视图,注意和连线push的区别,使用过storyBorad的一看就会看出区别的。对比较,多分析。

    IStoryboard *storyBoard=[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];

    DetailViewController

    detailViewController *

     = [storyBoard instantiateViewControllerWithIdentifier:@"DetailViewController"];

    这样就好了

  • 相关阅读:
    HTML5响应式导航
    草原图片大全
    草原psd素材
    仿堆糖图片自滚动瀑布流效果
    夏日户外风景PSD素材
    国画经典之梅花PSD素材
    更改VS的运行主窗体
    在VS中如何更换项目名称
    如何使用Visual Studio 2008(VS2008)编译C语言
    #region 私有字段
  • 原文地址:https://www.cnblogs.com/lgphp/p/4082762.html
Copyright © 2011-2022 走看看