iOS开发-UI (十二)StoryBoard
2017-02-14 22:46
295 查看
今天这篇是UI的最后一篇了,后面再整理网络篇
知识点
1.UIStoryBoard介绍
2. UIStoryBoard的界面跳转
3. UIStoryBoard界面之间的传值
=========================
UIStoryBoard介绍
UIStoryBoard是你可以用来定义用户界面的一种新的方式,像xib。与xib不同的是它可以同时管理多个ViewController,而且可以在UIStoryBoard中配置ViewController 之间的跳转关系。 如果主窗口只有一个view controller是作为UIStoryBoard的第一个界面,就需要勾选上 Initial Scene。UIStoryBoard将原有工程中的所有xib文件集成在一起,用拖拽的方式建立起两个viewController之间的跳转关系,使得整个程序的UI跳转逻辑清楚明了。使用UIStoryBoard后,界面相关的代码编写将更少。
1.如果主窗口只有一个view controller是作为story board的第一个界面,就需要勾选上 Initial Scene。
选中is initial view controller 当前的scene成为进入应用第一个scene
2.在UIStoryBoard当中可以直接在UITableView上定制cell
=========================
UIStoryBoard的界面跳转
3.注意push和present的区别
1).push对应pop,present对应dismiss;
2).present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根vc,其他vc。
3).present一般用于不同业务界面的切换,push一般用于同一业务不同界面之间的切换。
4.如何跳转到未连线的控制器
1)+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;
作用:获取某个对应的UIStoryboard对象
2)- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier
作用:获取该UIStoryboard的文件中的某个带有identifier标识的控制器 //跳转到未连接的控制器
6.如何回到前一个界面
在上一级视图控制器当中实现一个方法,要满足一下格式
-(IBAction)+任意方法名+(UIStoryboardSegue *)+任意变量名
=========================
UIStoryBoard界面之间的传值
1.正向传值
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
作用:即将切换场景时候调用
2.反向传值(传统的block,协议代理,通知中心,单例传值依然奏效)
-(IBAction)unwind:(UIStoryboardSegue *)segue
作用:返回上一个场景时候调用
知识点
1.UIStoryBoard介绍
2. UIStoryBoard的界面跳转
3. UIStoryBoard界面之间的传值
=========================
UIStoryBoard介绍
UIStoryBoard是你可以用来定义用户界面的一种新的方式,像xib。与xib不同的是它可以同时管理多个ViewController,而且可以在UIStoryBoard中配置ViewController 之间的跳转关系。 如果主窗口只有一个view controller是作为UIStoryBoard的第一个界面,就需要勾选上 Initial Scene。UIStoryBoard将原有工程中的所有xib文件集成在一起,用拖拽的方式建立起两个viewController之间的跳转关系,使得整个程序的UI跳转逻辑清楚明了。使用UIStoryBoard后,界面相关的代码编写将更少。
1.如果主窗口只有一个view controller是作为story board的第一个界面,就需要勾选上 Initial Scene。
选中is initial view controller 当前的scene成为进入应用第一个scene
2.在UIStoryBoard当中可以直接在UITableView上定制cell
=========================
UIStoryBoard的界面跳转
3.注意push和present的区别
1).push对应pop,present对应dismiss;
2).present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根vc,其他vc。
3).present一般用于不同业务界面的切换,push一般用于同一业务不同界面之间的切换。
4.如何跳转到未连线的控制器
1)+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;
作用:获取某个对应的UIStoryboard对象
2)- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier
作用:获取该UIStoryboard的文件中的某个带有identifier标识的控制器 //跳转到未连接的控制器
//取得Main.StoryBoard UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; //通过StoryBoardID获得对应的控制器对象 UIViewController *ctl = [storyBoard instantiateViewControllerWithIdentifier:@"ctlC"]; //代码跳转 [self.navigationController pushViewController:ctl animated:YES];
6.如何回到前一个界面
在上一级视图控制器当中实现一个方法,要满足一下格式
-(IBAction)+任意方法名+(UIStoryboardSegue *)+任意变量名
//UIStoryBoard的连线回跳方法 -(IBAction)unwindingSegue:(UIStoryboardSegue *)segue{ NSLog(@"sourceViewController = %@ destinationViewController = %@",segue.sourceViewController,segue.destinationViewController); //作用:在反向传值当中会应用到
=========================
UIStoryBoard界面之间的传值
1.正向传值
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
作用:即将切换场景时候调用
//当切换界面(push,present)的时候,就会调用以下方法 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ //正向传值 if ([segue.identifier isEqualToString:@"login"]) { LoginViewController *ctl = segue.destinationViewController; //赋值 ctl.userNameStr = self.userNameTF.text; ctl.passwordStr = self.passWordTF.text; }
2.反向传值(传统的block,协议代理,通知中心,单例传值依然奏效)
-(IBAction)unwind:(UIStoryboardSegue *)segue
作用:返回上一个场景时候调用
//UIStoryBoard的连线回跳方法 //先实现回跳方法,才能连线 -(IBAction)unwindingSegue:(UIStoryboardSegue *)segue{ //反向传值(UIStoryBoard专用) //判断是否点击的是注册完成 if ([segue.identifier isEqualToString:@"finish"]) { //严谨 if ([segue.sourceViewController isKindOfClass:[RegisterViewController class]]) { RegisterViewController *ctl = segue.sourceViewController; //刷新UI self.userNameTF.text = ctl.userNameTF.text; self.passWordTF.text = ctl.passWordTF.text; //作用:在反向传值当中会应用到 } }
相关文章推荐
- iOS开发UI高级—06使用storyboard创建导航控制器以及控制器的生命周期
- iOS开发 - 第01篇 - UI基础 - 01 - 从Storyboard开始学习
- iOS开发使用storyboard预览UI在不同屏幕显示效果
- iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解
- iOS 开发中的争议(二)UI到底应该用xib/storyboard完成,还是用手写代码来完成?
- iOS 开发中的争议(二)UI到底应该用xib/storyboard完成,还是用手写代码来完成?
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard 代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/Differen
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard
- IOS开发中UI编写方式——code vs. xib vs.StoryBoard
- IOS开发笔记(七)---对iOS多视图开发的补充(针对XCode4.2开发环境,Empty Application没有XIB/Storyboard文件的问题)
- iOS 应用的 UI 开发资源
- iOS开发教程:Storyboard全解析-第二部分
- iOS开发教程:Storyboard全解析-第一部分
- [转]iOS开发教程:Storyboard全解析-第一部分01
- 【iOS-cocos2d-X 游戏开发之十二】自定义Cocos2dx摇杆(增强Joystick),增加摇杆跟随
- Android 程式开发:(十二)最基本的UI控件 —— 12.3ProgressBar
- [转]iOS开发教程:Storyboard全解析-第一部分03
- IOS开发之Storyboard应用