Block回调传值

实现回调传值的方式有哪些?

1.block
2.delegate
3.NSNotificationCenter

1.block

先声明一个block (在哪里声明?)
需要将哪里的内容传出去就在那里声明一个block
回调的值放在哪里需要在接口部分 拖拽过来(需要注意拖拽到什么地方?存放回调的值的当前类的接口文件里面 )
比如:label是存放回调值的,则拖拽(按control + label控件 拖到ViewController.h 文件接口内 ,并命名)
textView是存放用户输入的需要做回调的空间,以相同的方式拖拽到PushViewController接口内 (当前控件所在的类头文件内)

需要传值的视图代码
PushViewController.h
typedef void (^Block) (NSString*);
@interface  PushViewController :UIViewController
@prooerty (nonatomic)Block PassValueBlock ;
如果省略这个默认为strong
PushViewControlle.m代码
#import "PushViewController.h"
@interface PushViewController ()
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end
⚠️注意:这个是一个分类,可以隐藏接口实现传值的过程:视图消失的时候将输入的内容作为Block(PassValueBblock)的参数即可
-(void)ViewWillDisappear:animated{
[superviewWillDisappear:animated];
_PassValueBlock(_textView.text);
    }```

#####ViewController.m代码

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *textlLabel;
@end
//:可以隐藏接口

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

PushViewController *pushViewController  =  segue.destinationViewController;

pushViewController.passValueBlock = ^(NSString *text) {

    _textlLabel.text = text;

};

//passValueBlock的生命周期在这个方法内

NSLog(@"%@",pushViewController.passValueBlock);

}
//:ViewController.m内

块内进行传值 ,将输入的数值赋值给回调标签textLbl.text

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • iOS开发中,页面传值是很常见的,但是页面传值你究竟知道多少呢?笔者这篇文章就是给大家介绍一下页面传值的具体方式,...
    蒲公英少年阅读 2,186评论 10 44
  • 匆匆来匆匆走,行程总是走路上,不知道多少寒来暑往,多少日月星辰。始终没有停下的时候,不知道什么时候是尽头。 人活一...
    念影子阅读 607评论 0 0
  • 6.3日答辩初期,和大多数同学一样,我是紧张的。感觉自己对论文不是很熟悉,担心老师问的问题答不上来。但在和朋友电话...
    简单的诗句阅读 279评论 0 0