iOS block传值和属性传值

第一个控制器:

-(void)barAction:(UIBarButtonItem*)sender
{

NextViewController *next=[[NextViewController alloc]init];
    //拿当前页面的值传到后一个页面
    next.stringValue=self.rv.textField.text;//属性传值

//block传值
    __weak RootViewController *weakSelf=self;//weakSelf可以在block中修改,__week改变相互持有的状态,避免释放的时候无法释放
    
    
    //block前面传后面
    //next.pv=^{
    //    return weakSelf.rv.textField.text;
    //};
    
    
    
    //block传值
    next.mb=^(NSString *str){
        weakSelf.rv.textField.text=str;
    };
    
    
    [self.navigationController pushViewController:next animated:YES];

}

第二个控制器:

.h文件

typedef void(^MyBlock)(NSString *str);//block传值,定义一个block块

//typedef NSString* (^PassValue)();//block前面传后面

@interface NextViewController : UIViewController

//接受前一个页面传过来的值
@property(nonatomic,strong)NSString *stringValue;//属性传值

//block传值
@property(nonatomic,copy)MyBlock mb;//block传值

//@property(nonatomic,copy)PassValue pv;//block前面传后面

.m文件

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    UIBarButtonItem *bar=[[UIBarButtonItem alloc]initWithTitle:@"退回" style: UIBarButtonItemStyleDone target:self action:@selector(barAction:)];
    
    self.navigationItem.leftBarButtonItem=bar;
    
    //用前一个页面传过来的值赋给当前页面
    self.nv.textField.text=self.stringValue;//属性传值
    //self.nv.textField.text=self.pv;//block前面传后面
    
}

-(void)barAction:(UIBarButtonItem*)sender
{
    self.mb(self.nv.textField.text);//block传值
    
    [self.navigationController popViewControllerAnimated:YES];
    
}

时间: 2024-11-08 20:22:38

iOS block传值和属性传值的相关文章

iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳转传值 1.属性传值(正向传值) 属性传值是正向传值,只可以从前面一个页面传递到第二个页面,不可以从第二个页面传递到第一个页面 2.代理传值(逆向传值) 代理传值是逆向传值 代理传值步骤 代理传值 适用于 反向传值 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewControll

iOS 页面间传值 之 属性传值,代理传值

手机 APP 运行,不同页面间传值是必不可少,传值的方式有很多(方法传值,属性传值,代理传值,单例传值) ,这里主要总结下属性传值和代理传值. 属性传值:属性传值是最简单,也是最常见的一种传值方式,但其具有局限性(一般用于将第一个页面的值传递到第二个页面,但无法从第二个页面传到第一个页面), 向SecondViewController传值:SecondViewController 设置属性 sendMessage 1 - (void)rightButtonAction:(UIBarButtonI

iOS block进行页面之间传值

#import <UIKit/UIKit.h> @interface FirstViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *contentTxtField; @end #import "SecondViewController.h" #import "FirstViewController.h" @interface FirstVi

属性传值,协议传值,block传值,单例传值四种界面传值方式

一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N + 1界面传值.而在此基础上,必须知道跳转界面的明确位置及所要传的值的具体类型.在第二个界面中声明所要传值 类型的属性. @interface SecondViewController : UIViewController //声明一个字符串属性来保存第一个界面传过来的字符串内容 @propert

iOS中多视图的传值 属性传值和代理传值

首先创建两个类 ,FirstViewController和SecondViewController,都继承于UIViewController 1 #import "AppDelegate.h" 2 #import "FirstViewController.h" 3 4 @interface AppDelegate () 5 6 @end 7 8 @implementation AppDelegate 9 10 11 - (BOOL)application:(UIAp

iOS传值之代理传值

iOS中传值方式有好几种,分别是:代理传值,block传值,属性传值,通知传值,单例传值,利用userdefault或者文件方式传值,通常代理传值和block传值使用最普遍,本文介绍代理传值的方式,后续博客会一次写上其他传值方式. 一 什么是委托代理? 1.协议(protocol),就是使用了这个协议后,必须按照协议规定的内容来处理事情,协议中要求的方法必须实现(@optional的方法除外). protocol是一种语法,它提供了一个很方便的.实现delegate模式的机会. 定义protoc

iOS学习之页面之间传值的方式总结

传值三种场景: 1.属性传值(从前往后传) 需求:第二个界面标签显示第一个界面输入框文字. 第一步, 在前一个界面定义属性. (语义属性声明为copy); 第二步, 在进入下一个界面之前,给属性传入数据. 第三步, 在后一个界面读取数据. 2.代理传值(从后往前传) 需求: 第一步:在后一个界面定义协议;并且定义一个方法,有一个参数,参数类型和传值类型一样; 第二步:定义代理属性.语义特性为assign, 类型为id,并且服从协议.id<xxxdelegate>; 第三步:寻找代理对象,(在p

iOS 页面间几种传值方式(属性,代理,block,单例,通知)

iOS 页面间几种传值方式(属性,代理,block,单例,通知) 姜糖水 2015-05-03 52 阅读 iOS 移动开发 第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视图控制器的部分信息 例如:第一个界面中的lable显示第二个界面textField中的文本 这就需要使用代理传值 页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五

iOS 页面间几种传值方式(属性,代理,block,单例,通知)

第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视图控制器的部分信息 例如:第一个界面中的lable显示第二个界面textField中的文本 这就需要使用代理传值 页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五种传值方式: (一)属性传值 第二个界面中的lable显示第一个界面textField中的文本 首先我们建立一个RootVie