动态加载故事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"];
这样就好了
动态加载故事storyboard的更多相关文章
- WPF动态加载3D 放大-旋转-平移
原文:WPF动态加载3D 放大-旋转-平移 WavefrontObjLoader.cs 第二步:ModelVisual3DWithName.cs public class ModelVisual3DW ...
- Vue 动态加载组件
为什么要动态加载呢?而不是一次性加载呢? 一次性?你能保证你拿的内容不多,那从性能方面说还是OK的.否则,就该什么时候用,就什么时候取. 得出这想法,源于前几天上班赶产品的故事: A组件是父亲,B组件 ...
- WPF动态加载3D 放大-旋转-平移
第一步:新建WavefrontObjLoader.cs using System; using System.Collections.Generic; using System.Windows; us ...
- Xib设计UITableViewCell然后动态加载
转自: http://www.2cto.com/kf/201202/120764.html (注:环境Mac OS X Lion 10.7.3 + Xcode 4.2.1 + iOS SDK 5.0. ...
- js动态加载css和js
之前写了一个工具类点此链接里面含有这段代码,感觉用处挺多,特意提出来 var loadUtil = { /* * 方法说明:[动态加载js文件css文件] * 使用方法:loadUtil.loadjs ...
- geotrellis使用(二十三)动态加载时间序列数据
目录 前言 实现方法 总结 一.前言 今天要介绍的绝对是华丽的干货.比如我们从互联网上下载到了一系列(每天或者月平均等)的MODIS数据,我们怎么能够对比同一区域不同时间的数据情况,采用 ...
- Ext JS 如何动态加载JavaScript创建窗体
JavaScript不需要编译即可运行,这让JavaScript构建的应用程序可以变得很灵活.我们可以根据需要动态从服务器加载JavaScript脚本来创建和控制UI来与用户交互.下面结合Ext JS ...
- Ext动态加载Toolbar
在使用Ext的GridPanel时候,有时候需要面板不用重新加载而去更新Store或者Toolbar,Store的方法有很多,例如官方api给我们提供的Store.load(),Store.reLoa ...
- Android动态加载框架汇总
几种动态加载的比较 1.Tinker 用途:热修复 GitHub地址:https://github.com/Tencent/tinker/ 使用:http://www.jianshu.com/p/f6 ...
随机推荐
- WIFI知识累计之802.11协议radiotap头解析方法
radiotap官方网站:http://www.radiotap.net/Radiotap 该网站详细介绍了radiotap的各个字段的长度和介绍,并包含解析代码项目地址,该文就在此网站的基础编写一些 ...
- com学习(五)——实现多接口
从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun.当然如果想偷懒的话,我们可以把 200 个函数都加 ...
- 多线程(三)GCD
一.GCD GCD:Grand Central Dispatch,宏大的中央调度!!!是苹果为多核的并行运算提出的解决方案,会自动合理地利用更多的CPU内核(比如双核.四核), GCD的底层依然是用线 ...
- awk中怎么比较字符串??
awk -vOFS="_" '{print $1,$2,$3} http://bbs.chinaunix.net/thread-1099655-1-1.html
- C#实现文件下载的几种方法
//WriteFile实现下载 protected void Button2_Click(object sender, EventArgs e) { /* using System.IO; */ st ...
- Retrofit入门
1 Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(ScalarsConverterFactory.create()) ...
- MFC六大核心机制之一:MFC程序的初始化
很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下 ...
- js中的条件语句
//js中的条件语句 ; //example1 单分支语句 ){ console.log("你已经不年轻了!"); }else{ console.log("你依然很有活力 ...
- 尝试自己建立以alpine 为基础的docker基础镜像和组件镜像
安装ubuntu14.04 然后 #获取root权限 sudo su #安装docker apt-get install docker #准备基础镜像 docker pull alpine docke ...
- Track files and folders manipulation in Windows
The scenario is about Business Secret and our client do worry about data leakage. They want to know ...