iOS开发 两个视图之间值传递的常用方法<一>
2015-08-24 02:02
435 查看
一、常用方法
1、代码块
2、通知
3、代理
4、kvo
5、单列
由于篇幅 的原因,就在每篇博客写一个方法。
举例直接看代码吧
先给出视图之间的关系吧,在故事板里面直接拖一个导航控制器,两个视图控制器。现在要把视图控制器2里面的textfield 输入的内容返回到视图控制器1的lable里面。
![](http://img.blog.csdn.net/20150824014802540)
与视图控制器1中的button相关联的方法:
看看视图控制器2中的代码:
.h文件:
.m文件:
通过用代码块来传值代码相当的简洁,包括后面的通知代码也特别简洁。
代码块用到的地方相当的多,希望好好理解这种思想,代码下载地址:http://download.csdn.net/detail/moxi_wang/9040615
1、代码块
2、通知
3、代理
4、kvo
5、单列
由于篇幅 的原因,就在每篇博客写一个方法。
举例直接看代码吧
先给出视图之间的关系吧,在故事板里面直接拖一个导航控制器,两个视图控制器。现在要把视图控制器2里面的textfield 输入的内容返回到视图控制器1的lable里面。
代码块传值
如果不熟悉代码块的相关用法:你就类似函数指针的看待 ,和函数指针相似度差不多与视图控制器1中的button相关联的方法:
- (IBAction)buttonAction:(UIButton *)sender { /*performSegueWithIdentifier: 此方法是根据两个视图控制器间的segue 来跳转到与视图控制器1建立关系的视图控制器 这里是视图控制器2 @“push”为segue的名字*/ [self performSegueWithIdentifier:@"push" sender:nil]; }
// View controllers will receive this message during segue unwinding. The default implementation returns the result of -respondsToSelector: - controllers can override this to perform any ancillary checks, if necessary. -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { //根据与当前视图控制器建立关系的segue 找到对应的视图控制器2 SecondController *vc = segue.destinationViewController; [vc returnInfor:^(NSString *name, NSString *old) { _name.text = name; _old.text = old; }]; }
看看视图控制器2中的代码:
.h文件:
#import <UIKit/UIKit.h> //声明一个代码块 typedef void(^BlockInfor)(NSString *name , NSString *old); @interface SecondController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *nameText; @property (weak, nonatomic) IBOutlet UITextField *oldText; //声明一个代码块类型的属性 @property(nonatomic,copy)BlockInfor infor; //声明方法 -(void)returnInfor:(BlockInfor)infor; @end
.m文件:
@implementation SecondController //让视图控制器2中的代码块等于从视图控制器1中传进来的代码块 -(void)returnInfor:(BlockInfor)infor { self.infor = infor; } //选择一个时机把输入的信息传递给代码块 此时输入肯定是完成了 -(void)viewWillDisappear:(BOOL)animated { //通过代码块把参数传给 它指向的那个代码块里面的代码 self.infor(_nameText.text,_oldText.text); } //点击视图关闭键盘 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [_nameText resignFirstResponder]; [_oldText resignFirstResponder]; } @end
通过用代码块来传值代码相当的简洁,包括后面的通知代码也特别简洁。
代码块用到的地方相当的多,希望好好理解这种思想,代码下载地址:http://download.csdn.net/detail/moxi_wang/9040615
相关文章推荐
- iOS-自定义TextView的方法,可以设置占位文字(placeholder)又可滚动
- ios中socket编程
- iOS日志框架CocoaLumberjack
- iOS记录崩溃信息
- iOS8之后的远程推送注册代码
- ios单元测试链接整理
- iOS测试与集成工具总结(转载)
- 快速入门:CoreLocation框架进行定位和iOS不同版本间定位的差异
- iOS 一个很简单的使用类的代码,和.net很像,很好理解
- iOS 一个很简单的使用类的代码,和.net很像,很好理解
- IOS应用沙盒文件操作
- git@osc使用教程
- iOS中陀螺仪的使用
- ios开发之xcode6中如何添加pch全局引用文件
- iOS中加速度传感器的使用
- iOS中使用RegexKitLite来试用正则表达式 使用ARC 20个错误解决办法
- 基于iOS的OpenCV之人脸检测(二)
- 【iOS发展-61】更换plist经过资源,执行iOS一旦数据仍显示在模拟器的外观,如何解决?
- iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示
- iOS开发中个人调试的几种方法