你真的会用storyboard开发吗?

 
随着苹果大屏手机的推出,苹果公司马上推出了屏幕适配的一些东西Constraints and Size Classes同时,在开发项目时候,是使用sb还是写代码,苹果公司给出了回复:使用SB开发,使用SB开发不仅省去了很多重复的代码,而且可视性非常强!但是你真的知道怎么去使用SB吗?

在一般的布局中,我们先使用一个plist文件,做为tabbarVC的的4个选项 pilist文件如下 

然后创建多个Storyboard,以及Storyboard关联的文件, 然后删除启动的一些sb界面,让界面启动时候从AppDelegate中启动, 在AppDelegate中写下如下代码

<!-- lang: cpp -->
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
//b不要在主方法中写碎代码
[self setUI];
[self.window makeKeyAndVisible];
return YES;

}

-(void)setUI{

UITabBarController *uiTabBar = [[UITabBarController alloc] init];

NSURL *url = [[NSBundle mainBundle] URLForResource:@"MainUI" withExtension:@"plist"];
NSArray *arr = [NSArray arrayWithContentsOfURL:url]; for (NSDictionary *dic in arr) { UIStoryboard *sb = [UIStoryboard storyboardWithName:dic[@"vcName"] bundle:nil];
UIViewController *uiVC = sb.instantiateInitialViewController;
uiVC.title = dic[@"title"];
uiVC.tabBarItem.image = [UIImage imageNamed:dic[@"icon"]];
uiVC.tabBarItem.badgeValue = dic[@"badgeNumber"]; [uiTabBar addChildViewController:uiVC];
} self.window.rootViewController = uiTabBar;

}

然后就能看到如下功能了,

效果如下:

那在SB文件中的按钮点击跳转到其他SB文件中怎么处理呢?如下代码:

  • (IBAction)clickBtn:(id)sender {
  • UIStoryboard *sb = [UIStoryboard storyboardWithName:@"hhh" bundle:nil];
  • UIViewController *vc = sb.instantiateInitialViewController;
  • [self.navigationController pushViewController:vc animated:YES];
  • }

注意: 通过 [XXViewController   alloc] init]; 的方法只能加载同名xib,不会加载同名的storyboard。 即使同时增加3个文件:WZTableViewController.h,WZTableViewController.m,WZTableViewController.storyboard,然后在代码中写上如下2句:

WZTableViewController *tableVC = [[WZTableViewController alloc]init];  //只会创建一个空的白色的tableView

[self.navigationController   pushViewController: tableVC  animated:YES];

也不会自动加载同名的storyboard。 加载storyboard必须采用如下代码:

  • UIStoryboard *sb = [UIStoryboard storyboardWithName:@"WZTableViewController" bundle:nil];
  • UIViewController  *settingVC = [sb  instantiateInitialViewController];

转自:http://my.oschina.net/panyong/blog/372385

[BS-30] 你真的会用storyboard开发吗?的更多相关文章

  1. 你真的了解Web前端开发吗?未来前端远比你想的有前途!

    近几年来,随着 HTML5.JS 的流行,前端这个职业火热了起来!不少人发出疑惑,前端以后还会更有前途吗? 我只能告诉你:前端不灭 现在都明白了用户体验至上,还要用着舒服 后端提供床,前端提供颜值高的 ...

  2. 【iOS开发-66】QQ设置界面的案例:利用storyboard开发静态的tableView界面,核心是Static Cells

    (1)效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JB ...

  3. iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果

    在公司做项目一直使用Storyboard,虽然有时会遇到团队合作的Storyboard冲突问题,但是对于Storyboard开发效率之高还是比较划算的.在之前的博客中也提到过,团队合作使用Storyb ...

  4. vue(9)—— 组件化开发 - webpack(3)

    前面两个终于把webpack相关配置解析完了.现在终于进入vue的开发了 vue组件化开发预热 前期准备 创建如下项目: app.js: footer.js: main.js: webpack.con ...

  5. IT开发工程师的悲哀现状和可能前途

    IT开发工程师的悲哀现状和可能前途 本文所指的开发工程师,仅指程序开发人员和以数字电路开发为主的电子工程师.当你选择计算机或者电子.自控等专业进入大学时,你本来还是有机会从事其它行业的,可你毕业时执迷 ...

  6. Day10 图形用户界面和游戏开发

    基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述.Python默认的GUI开发模块是tkinter(在Python 3 ...

  7. 千千万万的IT开发project师路在何方

    已经找不到该文章的最初出处了,有找到的人请告诉我.谢谢~~ 千千万万的IT开发project师路在何方 2007-06-25 21:41 恭喜,你选择开发project师作为自已的职业! 悲哀.你选择 ...

  8. 从中间件的历史来看移动App开发的未来

    在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作:在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资.不知道大家是否想过:移动应用开 ...

  9. 基于CkEditor实现.net在线开发之路(1)

    我以前的公司使用office sharepoint designer为界面设计器,嵌套各种自定义控件,进行各种管理软件,工作流的开发,遇到比较复杂的逻辑,则采用本地写类库,生成DLL上传到服务器,通过 ...

随机推荐

  1. connect & express简介

    Node.js[5] connect & express简介 Node.js[4] 第一个模块 Node.js[3] 俯瞰API (整理中) Node.js[2] Hello Node Nod ...

  2. float使内联支持宽高

    float使内联元素支持了宽高,可以设置宽高属性:float消除内联元素的空格:

  3. CentOS6.4 安装MongoDB

    1.下载MongoDB(64位) http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz 或 http://pan.baidu.c ...

  4. 九、UINavigationController切换视图 实例

    现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Application 命名 NavigationCo ...

  5. Golang redigo hmset hset 问题

    最近公司项目,换到了golang 下面来开发,遇到了redis存储链表的问题,困扰了我好几天,后面静下心来,好好读了一下源码,发现官方的例子,最终还是羊毛出在羊身上 c, err := dial() ...

  6. JAVA创建并写入内容到xlsx文件

    首先需要在web项目中导入jxl.jar 包 //action中代码 public String downloadReport(){        String path = System.getPr ...

  7. ZK 长时操作带进度条

    LongProcess.zul: <?xml version="1.0" encoding="UTF-8"?> <window id=&quo ...

  8. B-树的插入、查找、删除

    转自:http://blog.163.com/zhoumhan_0351/blog/static/39954227200910231032917/ 前面讨论的查找都是内查询算法,被查询的数据都在内存. ...

  9. 无损破解Android图案密码及原理

    作者:http://weibo.com/hellguard 安卓图案密码穷举,秒破gesture.key.图案密码是明文的SHA1,明文取值范围是[00-08],不超过9字节,不重复出现,没有SALT ...

  10. 【HDU4419 Colourful Rectangle】 线段树面积并

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4419 题目大意:给你n个矩形,每个矩形都有一种颜色,矩形覆盖会出现另外一种颜色,问你所有矩形中不同的颜 ...