iOS UI基础-12.0 Storyboard
storyboard创建控制器
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
2.接着初始化storyboard中的控制器
MJViewController *mj = [storyboard instantiateInitialViewController];
MJViewController *mj = [storyboard instantiateViewControllerWithIdentifier:@”mj"];
完整方式:
UIStoryboard *story=[UIStoryboard storyboardWithName:@"NJWisdomCard" bundle:nil];
NJWisdomCardDetailViewController *wisdom=[story instantiateViewControllerWithIdentifier:@"NJWisdomCardDetailViewController"];
wisdom.bindaliascode=cardId;
wisdom.hidesBottomBarWhenPushed=YES;
[self.navigationController pushViewController:wisdom animated:YES];
Segue
什么是Segue

Segue的属性
每一个Segue对象,都有3个属性
@property (nonatomic, readonly) NSString *identifier;
@property (nonatomic, readonly) id sourceViewController;
@property (nonatomic, readonly) id destinationViewController;

Segue的类型
- 自动型:点击某个控件后(比如按钮),自动执行Segue,自动完成界面跳转
- 手动型:需要通过写代码手动执行Segue,才能完成界面跳转



[self performSegueWithIdentifier:@"login2contacts" sender:nil];
- 点击某个控件后,不需要做任何判断,一定要跳转到下一个界面,建议使用“自动型Segue”
- 点击某个控件后,需要做一些判断,也就是说:满足一定条件后才跳转到下一个界面,建议使用“手动型Segue”
使用例子
点击登陆,判断后跳转(手动型)
/**
* 登录
*/
- (IBAction)login {
if (![self.accountField.text isEqualToString:@"mj"]) {
// 帐号不存在
[MBProgressHUD showError:@"帐号不存在"];
return;
} if (![self.pwdField.text isEqualToString:@""]) {
// 密码错误
[MBProgressHUD showError:@"密码错误"];
return;
} // 显示一个蒙版(遮盖)
[MBProgressHUD showMessage:@"哥正在帮你登录中...."]; // 发送网络请求 // 模拟(1秒后执行跳转)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 移除遮盖
[MBProgressHUD hideHUD]; // 跳转 -- 执行login2contacts这个segue
[self performSegueWithIdentifier:@"login2contacts" sender:nil];
});
} /**
* 执行segue后,跳转之前会调用这个方法
* 一般在这里给下一个控制器传递数据
*/
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// 1.取得目标控制器(联系人列表控制器)
UIViewController *contactVc = segue.destinationViewController; // 2.设置标题
contactVc.title = [NSString stringWithFormat:@"%@的联系人列表", self.accountField.text];
}
@end
多个控制器跳转(自动)
/**
* 执行跳转之前会调用
* 在这个方法中,目标控制器的view还没有被创建
*/
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
id vc = segue.destinationViewController; if ([vc isKindOfClass:[MJAddViewController class]]) { // 如果是跳转到添加联系人的控制器
// 设置下一个控制器(添加联系人的控制器)的代理
MJAddViewController *addVc = vc;
addVc.delegate = self;
} else if ([vc isKindOfClass:[MJEditViewController class]]) { // 如果是跳转到查看(编辑)联系人的控制器
MJEditViewController *editVc = vc;
// 取得选中的那行
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
editVc.contact = self.contacts[path.row];
editVc.delegate = self;
}
}
代码跳转StoryBoard界面
//将我们的storyBoard实例化,“Main”为StoryBoard的名称
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Me" bundle:nil]; //将第二个控制器实例化,"SecondViewController"为我们设置的控制器的ID
ReceiptAddressVC *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"ReceiptAddressVC"];
[self.navigationController pushViewController:vc animated:YES];
iOS UI基础-12.0 Storyboard的更多相关文章
- iOS UI基础-4.0应用程序管理
功能与界面 功能分析: 以九宫格的形式展示应用信息 点击下载按钮后,做出相应的操作 步骤分析: 加载应用信息 根据应用的个数创建对应的view 监听下载按钮点击 整个应用界面: 程序实现 思路 UI布 ...
- iOS UI基础-5.0 QQ框架(Storyboard)
1.拉入TabBarController和4个Navigation 2.TabBarController关联Navigation 3.设置消息,拉入一个Button,设置背影 4.联系人,拉入一个Se ...
- iOS UI基础-17.0 UILable之NSMutableAttributedString
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...
- iOS UI基础-9.0 UITableView基础
在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView.UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳. UITableView有两种样式: ...
- iOS UI基础-7.0 UIScrollView
概述 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限.当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容,普通的UIView不具备滚动功能,不能显示过多的 ...
- iOS UI基础-1.0加法计算器
1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了 ...
- iOS UI基础-19.0 UICollectionView
直接上代码,说明请看注释吧 1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateF ...
- iOS UI基础-16.0 UIButton
回归自然,UIButton是我们使用最频烦的一个控件.下面,对该控件的一些常用方法进行一些总结. UIButton *payStateBtn = [UIButton buttonWithType:UI ...
- iOS UI基础-15.0 UIWebView
WebView介绍 知识点: 代码创建一个UIWebView OC调用html的js js页面调用OC 相关代码实现 代码创建一个UIWebView // 1.webView UIWebView *w ...
随机推荐
- php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能
2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是r ...
- JS BOM DOM对象 select联动 计时器 时间 css操作 节点(标签 ) 查找标签 {前端基础之BOM和DOM}
前端基础之BOM和DOM 前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我 ...
- 查看ElasticSearch服务状态和结果的URL
1,查看es集群状态 http://ip:port/_cat/health?v 2,集群节点健康查看 http://ip:port/_cat/nodes?v 3,列出集群索引 http://ip:po ...
- 解决GP服务产生的结果无法自动发布为地图服务的问题
在ArcGIS for Javascript API或REST API调用GP服务时,常常会遇到这样一种情况:GP服务运行以后,执行成功,也能够生成结果,然而结果并没有直接产生动态的地图服务供API调 ...
- 【未完待续】API接口
1.json传输 2.安全:权限 http://blog.csdn.net/linlzk/article/details/50748580. 比如:调用端有userId.psw.version.ti ...
- 图解Fiddler如何抓取Android数据包
介绍Fiddler抓取Android数据包希望对大家的工作和学习有所帮助! 电脑开启wifi热点 首先在电脑上下载一个wifi软件,我这里用的是猎豹wifi,电脑开启wifi热点后,如下图所示: 设 ...
- 被监测teamviewer被检测出用于商业用途
一.下载teamviewer的破解程序 下载链接 这个要付几块钱,本人付过,个人下载过,可以免费传给你们,可以留下邮箱,但是不一定及时回复. 二. 解压后将.exe放到对应的软件安装目录,运行,点击f ...
- mysql分库 分表
原文链接:http://www.jianshu.com/p/89311703b320 传统的分库分表传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库.分库分库的原因 首先, ...
- vue项目使用vue-photo-preview插件实现点击图片放大预览和移动
官方链接: http://npm.taobao.org/package/vue-photo-preview # 安装 npm install vue-photo-preview --save # 引入 ...
- java各版本简单对比
1995.5 Oak ——>java1.0 提出 write once run anywhere 1996.1 jdk1.0 jvm Sun Classic VM 1997.2 JDK1.1 ...