关于iOS block传值的理解

ios-block逆传值页面间的.zip 简单的实现页面简单传值 ,主要是介绍了block的逆传值 ,简单理解,易于阅读。适用于初学者。 立即下载

今天研究了一下iOS block的传值。

场景:

视图A跳转到视图B,当由B视图跳回视图A时,返回一些视图A需要的数据。


block使用时一般是在视图A中调用视图B中的一个方法,该方法的参数中包含block。

所以在视图B的.h文件中定义一个带有block参数的方法。(第一步)

- (void)callMyBlock:(TestBlock)block;//先不要管TestBlock是什么鬼,反正是一个参数的类型

既然在.h文件中定义了个方法,那么就应该在.m中实现这个方法吧。(第二步)

-(void)callMyBlock:(TestBlock)block {

    self.myBlock = block;//self.myBlock很明显是TestBlock类型的,不然怎么可以self.myBlock = block;

}

self.myBlock在视图B的.h中声明:

@property (nonatomic,copy)TestBlock myBlock;//上面的callMyBlock执行相当于将传进来的“block”存到这个变量中


现在在视图B中,可以拿到视图A传过来的block(代码块),这个block中写的什么,视图B肯定不知道啊,但是视图B知道block的格式。

现在在视图B中的.h头部定义一下TestBlock;(就算第三步吧,应该算第一步之前的)

typedef void (^TestBlock)(NSString *x) ;//block的名称:TestBlock,返回值:void,参数:NSString类型 x。


到现在为止一直还没有调用过这个block(代码块)呢。仔细想想,B中定义了一个block格式,定义了一个参数为这个格式的block,方法实现是存储这个传进来的block。所以一直没有使用这个block呢。

现在视图B中的myBlock是视图A传过来的block。

所以是不是应该拿着视图A中的block做点什么了。(第四步)

至于在哪里调用这个block,那就看你要在什么时候用咯。

self.myBlock(@"把这些传给视图A");


现在视图B中都弄完了。

在视图A中怎样取出这个“把这些传给视图A”呢?(第五步,调用视图B中定义的方法就可以了)


[viewB callMyBlock:^(NSString *x) {

        self.blockText.text = x;//这里的x 就是你在视图B中self.myBlock(@"把这些传给视图A");传的参数咯!!

    }];



到此已完成block传值。over


其实self.myBlock(@"把这些传给视图A");等于[viewB callMyBlock:^(NSString *x) {

        self.blockText.text = x;

    }];


block比喻:

我有一条金鱼(数据)。

想要吗?你得给我我想要的鱼缸(我定义的block)。

你怎么把鱼缸给我我肯定会告诉你啊,是顺丰邮,还是申通。(我定义的一个方法,参数是block)。

上面整个过程没问题了,你的鱼缸里就有鱼了。



ios-block反向传值.zip 通过自己的了解详细解析 block 反向传值 立即下载

相关推荐

iOS block传值

iOS 常用block 传值

【iOS】—— Block传值

Block简介 将函数及其执行上下文封装起来的对象,block的调用实际就是函数的调用。 Block传值的步骤 步骤1:block 的声明 (视图二 .h 中) 返回值类型(^block 的名字)(参数列表); //自定义类型Block typedef void(^returnLabelValue)(NSString *label); //Block声明 @property (nonatomic, strong) returnLabelValue valueLabel; 步骤二:block 的

m0_55124878的博客 1019

Windows下用VS2022编译libcurl全流程(含openssl配置避坑指南)

本文详细介绍了在Windows平台使用Visual Studio 2022编译libcurl库的完整流程,重点解决了集成OpenSSL支持HTTPS功能时的常见配置难题。从环境准备、源码获取、依赖编译到工程配置,提供了清晰的步骤和针对非默认安装路径的避坑指南,帮助开发者高效完成网络库的集成工作。

weixin_29291185的博客 245

【iOS】—— block传值

block传值和协议传值类似,都是从下一界面往上一界面传值,两者之间在用法上也有着很多相似之处。

m0_62386635的博客 541

Xilinx Vivado vitis IDE launch Failed \ Web installer client Obsolete 怎么办

Xilinx vitis_IDE failed Web installer client Obsolete

weixin_44820962的博客 8643

Vivado ILA调试全攻略:从HDL实例化到Block Design的5个实战技巧

本文全面解析了Vivado集成逻辑分析仪(ILA)的五种核心调试方法,涵盖从HDL代码实例化到Block Design集成的实战技巧。详细对比了不同方法的优缺点与适用场景,并重点介绍了如何利用Debug Hub高效管理多时钟域复杂调试,旨在帮助FPGA开发者精准定位问题,显著提升板级调试效率。

weixin_29214199的博客 376

ios Block传值

在 ios中 ,传值方式有 属性传值、自定义初始化构造函数传值,通知传值,代理传值,KVC传值,单例传值,block传值,下面来谈谈block传值; block传值有两种方式,第一种是把block当做一个属性来传值       第二种是把lock当做对象方法的参数来传值 block当做属性传值: 第一步,在需要传值的类的  .h文件中声明一个无返回值的block属性

ThisSummer__的博客 833

KF-gins输出结果绘图

KF-gins输出结果绘图

m0_51977577的博客 1107

ios 中block 中传block参数

- (void)registerHandler:(NSString *)name handler:(void (^)(id data,void(^response)(id data)))handler; 调用 handler(data, ^(id resp){ @strongify(self); ...

liubo的博客 1370

【腾讯小龙虾 WorkBuddy 专栏 03】技能(Skills)制作全教程!自定义技能编写、导出分享、导入使用一步到位

🔥腾讯AI智能体WorkBuddy自定义技能全攻略 本文为零基础用户提供WorkBuddy自定义技能的完整教程,涵盖技能概念、编写规范到实操全流程。核心内容包括: 技能本质:标准化任务指令模板,可固化重复操作流程 三大价值:一键执行重复任务/跨设备共享/降低使用门槛 实操演示:以"桌面文档自动分类"为例,分步讲解编写、测试、导出 共享方案:支持单技能/批量导出,通过任意渠道传输分享 导入指南:3秒完成他人技能加载,并提供常见问题解决方案 高阶优化:增加异常处理、版本管理等提升技能普适性

AI人人懂 2944

Centos7 yum 报错「Errno 256」No more mirrors to try 解决方法

首先该问题的出现是由于网络的震荡导致,这是重点。(1)将源更换成阿里云的官方源,步骤参考如上(2)同时将zabbix的官方源更换成阿里云里面的zabbix镜像源,因为zabbix官方源根本网络不通,因为国家防火墙的拦截,导致网络不通。这是阿里源的zabbix镜像地址: https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/修改系统中早期生成的zabbix.repo文件,如下:主要是把baseurl替换成阿里云的zabbix镜像地址即可。

专注基础架构领域 3873

[iOS]-Block传值

Block简介 block 就是带有自动变量(就是局部变量)值的匿名函数。顾名思义就是带有自动变量(也就是局部变量)值的不带名称的函数。 Block传值 Block传值是类似于协议传值的反向传值,即都是从B界面传回A界面 Block传值的过程 先在B界面的.h文件中定义代码块和block属性 在A界面的.m文件中设置事件,从A界面跳转到B界面,并编写B界面的block将相应值传给A界面属性的代码 在B界面.m文件的触发传值的事件中将需要传的值做为block代码块的参数,并返回到A界面即可看到完成了bloc

m0_52192682的博客 460

Marvell 88Q6113 如何制作一个完整的量产固件88Q6113_flash.bin并进行烧录

本章节介绍如何基于Marvell工具链,制作一个完整的量产固件88Q6113_flash.bin,集成用户自定义的配置文件 config.bin,用于88Q6113的Flash烧录。注:Marvell 88Q5072 与 Marvell 88Q6113 的配置流程是一样的。

老板来份猪脚拼叉烧的博客 2008

【iOS】多界面传值

在先前的的仿写中多次使用到了不同界面的传值,这里作一个总结。在仿写项目的过程中,多界面传值是很重要的部分,笔者会在学习后继续补充完善。

2401_87841908的博客 1193

OpenClaw终于有了图形界面,一键安装使用你的24小时AI 研究助手!

ClawX是连接强大 AI 智能体与普通用户之间的桥梁。基于OpenClaw构建,它将命令行式的 AI 编排转变为易用、美观的桌面体验——无需使用终端。无论是自动化工作流、连接通讯软件,还是调度智能定时任务,ClawX 都能提供高效易用的图形界面,帮助你充分发挥 AI 智能体的能力。ClawX 预置了最佳实践的模型供应商配置,原生支持 Windows 平台以及多语言设置。当然,你也可以通过设置 → 高级 → 开发者模式来进行精细的高级配置。

Maynor的博客 3389

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IOS——多界面传值

如果现在要从B向A传值,我们首先应该在B的接口部分声明一个Block属性,然后在由B跳转回A的位置将需要传递的值放入该属性的参数部分,最后在A跳转到B的位置调用B页面的Block属性,并在Block块中完成相应的操作。然后在从B视图跳转到A视图的地方设定好代理 delegate的对象执行协议方法,最后在接收值的A界面遵循协议并且在A跳转到B的地方将B的代理者属性设定为A视图控制器,最后实现相应的协议方法即可。发送通知,然后在A界面注册通知,也就是接收通知,最后在A界面实现通知中的方法即可。

m0_73348697的博客 576

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

工作记录8:iOS 传值问题总结(7种传值完美介绍)

镔哥哥总结传值有以下: 1、属性传值       前向后传值。 记住: /*  1:属性传值第一步需要用到什么类型就定义什么样的属性  2:从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页面推到下一个页面  */ MainViewController与SecondViewControll

sammyieveo的专栏 4132

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

iOS传值

属性传值 前面学过代理传值,它是从后往前传值的, 如果我们要从前往后传的话,属性传值是最简单的了 首先我们还是先建立两个视图控制器 firstViewController和secondViewController 这里我们是想把firstViewController的值传到secondViewController 第一步: 先在secondViewController定义一个字符串 我们称为传值字...

星星leslie的博客 163

iOS 界面传值的六种传值方式

实际开发场景中,页面之间传值非常的普遍,今天就来谈一谈ios 页面传值的六种方式。 页面传值也是指ViewController 传值。 1,属性传值 顾名思义,在要跳转的页面设置一个属性,由页面1 跳转把值带过去即可。 NextViewController* nextVc = [[NextViewController alloc]init]; nextVc.str = @"这是属性传值"; [ self presentViewController:nextVc...

dhl_1986的博客 1022

iOS界面传值的方式(一)block传值

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34220179的博客 141

iOS简单传值

1. 正向传值 使用场景:界面 A 跳转界面 B 的同时,向界面 B 传递值,即上级向下级传递 步骤: 在界面 B 的 .h 文件中公开声明一个属性 @interface ViewC1 : UIViewController //正向传值 1 @property (nonatomic, copy) NSString *value_1; @end 导入界面 B...

qq_38282114的博客 141

iOS 中的页面间传值的各种方法

1.通过属性传值   将A页面所拥有的信息通过属性传递到B页面使用,B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传到B页面。 #import<UIKit/UIKit.h> #import"DetailViewController.h" @interfaceRootViewController :UIViewController...

dianfeiil764936的博客 130

ios 给网页传值_iOS 页面之间的相互传值(针对初学者)

iOS中,页面之间的相互传值分为正向传值和逆向传值两种方法正向传值:A想要传值给B,只要在A中包含B的头文件,并获取到B中.h的属性,在modal或push之前,给B中.h文件中的某属性赋值,即可完成传值本文主要讲述的是逆向传值的几个常用方法:通知传值、代理传值、block传值如图所示:操作流程:点击控制器A的屏幕,modal到控制器B,然后通过通知/代理/block的方法,给控制器A的UILab...

weixin_29643223的博客 193

iOS—多界面传值

iOS多界面传值,属性,协议,Block, KVO,通知传值,给你最尊贵的传值体验。

cyberjack的博客 723

iOS阶段学习第32天笔记(页面传值方法介绍)

iOS学习(UI)知识点整理 一、界面传值方法 1、方法一 Block传值 通过SubView视图的Block向View视图传值改变View视图的背景色 实例代码: 1)SubViewController.h 文件的代码实现 1 #import <UIKit/UIKit.h> 2 @interface SubViewController : UIVie...

141

iOS开发页面传值方案

iOS开发过程中涉及到最多的一个地方就是页面传值问题,值从A页面到B页面,然后从B页面到A页面。从而保证整个程序的连贯性和实时性。 目前iOS页面间传值方案有如下方式: 1.属性传值 2.委托delegate传值 3.通知notification传值 4.block传值 5.kv...

157
下一篇: iOS启动图片配置及遇到的一些问题解决
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值