iOS通过block在两个页面间传值的方法_IOS

一、功能需求

在第一个页面中有一个button和一个label,label上默认显示“哈哈”,点击button进入第二个页面。在第二个页面有一个UITextField和一个button2,点击button2回到第一个页面,但同时第一个页面的label上显示的文字修改为刚刚在UITextField写进去的文字。

二、先定义block

在要传值得那个页面定义含有block参数的方法,即在第二个页面的.h文件中定义:

重新定义:typedef void (^ReturnTextBlock)(NSString *showText);

//重新定义block类名 void返回值类型 ReturnTextBlock类名(重命名类名) NSString *showText参数

声明一个block变量:@property (nonatomic, copy) ReturnTextBlock returnTextBlock;

//注:此处声明需要用copy属性,因为block一开始是放在栈上的,只有copy后才会放到堆上。

block的调用方法:- (void)returnText:(ReturnTextBlock)block;

在.m文件中实现

block的调用方法实现代码:- (void)returnText:(ReturnTextBlock)block {

self.returnTextBlock = block;

}

至此,block准备工作已完成。

三、通过block在两个页面间进行传值

在第一个页面,点击button按钮实现跳转到第二个页面并调用第二个页面的block方法。

-(void)FirstBtnPressed

{

//用blockSelf修饰blockSelf.label 避免block块内部_label被循环引用

__weak ViewController *blockSelf = self;

ShowViewController *orderVC=[[ShowViewController alloc]init];

//block返回值(跟代理写法挺类似的,就是语法不同,代理的话是此处是self.delegate=self;)

[orderVC returnText:^(NSString *showText) {

blockSelf.label.text=showText;

}];

[ self presentViewController:orderVC animated: YES completion:nil];

}

在第二个页面.m文件中实现button2按钮的方法

-(void)SecondBtnPressed

{

//只要在变量前面增加__block,在block里面就可以修改该变量的值。当然也有其他方法如添加static等。

[self dismissViewControllerAnimated:YES completion:^{

//在使用block前需要对block指针做判空处理。

//不判空直接使用,一旦指针为空直接产生崩溃。

if (self.returnTextBlock != nil) {

self.returnTextBlock(self.text.text);

NSLog(@"text==%@",self.text.text);

}

}];

}

这样,就可以实现我们想要实现的功能了,很简单吧。

小结

谁要传值谁就定义含有block的参数的方法,在方法内部调用blcok,将要传递的参数给了blcok,blcok跳进实现它要执行代码的'地方'执行代码.传值完成

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios
, block传值
, block页面传值
ios中block传值
ios 页面传值、ios跨页面传值、ios页面传值方式、ios页面间传值、ios三种跨页面传值,以便于您获取更多的相关知识。

时间: 2024-12-30 23:03:53

iOS通过block在两个页面间传值的方法_IOS的相关文章

JavaScript实现在页面间传值的方法_javascript技巧

本文实例讲述了JavaScript实现在页面间传值的方法.分享给大家供大家参考.具体如下: 问题如下: 在 a.html 页面中,<form> 的 onsubmit 事件调用一个方法 foo( ),打开 b.html 页面的同时给 b.html 传递参数.方法 foo( ) 中需要传递变量参数到 b.html 页面,在 b.html 页面接受参数值,但不能使用服务器端技术. 解决代码如下: a.html页面如下: <html> <head> <title>

JAVASCRIPT实现的WEB页面跳转以及页面间传值方法_javascript技巧

但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能. 下面是具体的做法: 一:跳转到新页面,并且是在新窗口中打开时: 复制代码 代码如下: function gogogo() { //do someghing here... window.open("test2.html"); } window是一个javascript对象,可以用它的open方法,需要注意的是,如果这个页面不是一相相对路径,那么要加http://,比如: 复

ASP.NET十分有用的页面间传值方法

一.目前在ASP.NET中页面传值共有这么几种方式:1.表单提交   <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222&quo

ASP.NET 页面间数据传递方法

  0.引言 Web 页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用Asp.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确.安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合. 1.数据传递的各种方法和分析 1.1 使用Querystring 方法 QueryString 也叫查询

asp.net 页面间传值方法小结_实用技巧

1.表单提交, 复制代码 代码如下: <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222"/> </for

asp.net Context.Handler 页面间传值方法第1/2页_实用技巧

一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交, <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222&quo

ASP.NET 页面间数据传递方法小结_实用技巧

0.引言 Web 页面是无状态的,服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用Asp.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确.安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合. 1.数据传递的各种方法和分析 1.1 使用Querystring 方法 QueryString 也叫查询字符串

页面传值-ASP.NET页面间传值 绑定到gridview显示

问题描述 ASP.NET页面间传值 绑定到gridview显示 本人ASP.NET新手,正在做一个ASP.NET的报名系统.想实现在A页面填写学生信息,然后跳转到B页面,显示到B页面的gridview控件,待学生修改确定后再传入数据库.不知道应该怎么传值?有什么好的办法吗?先谢谢大家 解决方案 ASP.Net页面间传值

JSP页面间传值问题实例简析_JSP编程

本文实例分析了JSP页面间传值问题.分享给大家供大家参考,具体如下: 其中最简单的要数<a>标签里面的href来传值了, 在a.jsp中写: <a href="b.jsp?name1=值"></a> 然后在b.jsp中接收: <% String name2 = new String(request.getParameter("name1").getBytes("ISO-8859-1"),"GBK