iOS开发 两个视图之间值传递的常用方法<一>

一、常用方法
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moxi_wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值