block 页面传值小结
我以自己项目中的一个模块为例,首先有两个页面,第一个页面为显示城市页面,第二个页面为选择要使用block传的值(城市名)。
第一个页面中的显示控件:
//自定义左部定位视图
self.locView = [[LocationView alloc] initWithFrame:CGRectMake(0, 0, SCREENWIDTH/2-35, 25)];
self.locView.imgView.image = [UIImage imageNamed:@"around"];
UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cityListView)];
[self.locView addGestureRecognizer:tapGes];
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithCustomView:_locView];
self.navigationItem.leftBarButtonItem = leftButton;
第二个页面的选择页面:
首先要在.h文件中声明block代码块
typedef void(^ChangeCityBlock)(NSString *cityStr);
@interface CityListViewController : UIViewController{
ChangeCityBlock _sendBlock;
}
@property(nonatomic, copy) NSString *currentCity;
-(void)setSendBlock:(ChangeCityBlock)block;
-(ChangeCityBlock)sendBlock;
@end
到这里准备找工作已做好,下面是传值关键
当我们从第一个页面跳转至第二个页面时,我的代码如下,仅供参考:
//城市列表
-(void)cityListView{
CityListViewController *clVC = [[CityListViewController alloc] init];
[clVC setSendBlock:^(NSString *cityStr) {
_locView.cityLb.text = cityStr;
}];
clVC.currentCity = _locView.cityLb.text;
[self.navigationController pushViewController:clVC animated:YES];
}
接下来,要在第二个页面实现定义的block方法
-(void)setSendBlock:(ChangeCityBlock)block{
if (_sendBlock != block) {
_sendBlock = [block copy];
}
}
-(ChangeCityBlock)sendBlock{
return _sendBlock;
}
最后,当我们在第二个页面确定返回的值并返回第一个页面时,要触发一个方法,将要返回的值传入block代码中
-(void)blockReturnCity:(NSString *)city{
if (self.sendBlock) {
self.sendBlock(city);
}else{
NSLog(@"没有传入block");
}
[self goback];
}
以此即可将在第二个页面中确定的值传到第一个页面。
注:此次总结只是以为自己的iOS学习做备忘录为目的,在思路或是步骤顺序上若有混乱,请谅解!大家若有好的方法也请不吝赐教。
block 页面传值小结的更多相关文章
- iOS Block 页面传值
为什么80%的码农都做不了架构师?>>> 直接上代码 1.定义block @interface TopTypeCollectionView : UIView @property ...
- 页面传值总结Block
// AppDelegate.m // 页面传值总结 // // Created by qianfeng on 15/6/13. // Copyright (c) 2015年 qianfeng. Al ...
- iOS页面传值方式
普遍传值方式如下: 1.委托delegate方式: 2.通知notification方式: 3.block方式: 4.UserDefault或者文件方式: 5.单例模式方式: 6.通过设置属性,实现页 ...
- ASP.NET MVC 5 Web编程5 -- 页面传值的方式
本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...
- WebForm 页面传值
一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是 ...
- Spring 向页面传值以及接受页面传过来的参数的方式
来源于:http://www.cnblogs.com/liuhongfeng/p/4802013.html 一.从页面接收参数 Spring MVC接收请求提交的参数值的几种方法: 使用HttpSer ...
- ASP.NET页面传值不使用QueryString
ASP.NET页面传值不使用QueryString Asp.net中的页面传值方法: 1 Url传值 特点:主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址 ...
- artdialog4.1.7 中父页面给子页面传值
artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...
- webform页面传值和删除修改
一.webform跨页面传值1.内置对象地址栏数据拼接 QueryString 优点:简单好用:速度快:不消耗服务器内存. 缺点:只能传字符串:保密性差(调转页面后在地址栏显示):长度有限.响应请求对 ...
随机推荐
- Winform混合式开发框架的特点总结
Winform混合式开发框架,是一种支持分布式部署的应用模式,支持直接连接数据库,访问远程WCF服务,访问远程Web API服务等服务的综合性框架,根据不同的需求采用不同的数据接口,是一个适应性很广的 ...
- C#的变迁史 - C# 2.0篇
在此重申一下,本文仅代表个人观点,如有不妥之处,还请自己辨别. 第一代的值类型装箱与拆箱的效率极其低下,特别是在集合中的表现,所以第二代C#重点解决了装箱的问题,加入了泛型.1. 泛型 - 珍惜生命, ...
- 暴风冯鑫:去美国香港的99%都亏,互联网公司打死都要回A股
“上市之后,我回答得最多的两句话:一句是运气好:另一句是有好运气要好好地使用它.” 5月18日,暴风科技上市55天后,首享科技大厦办公室里,暴风科技CEO冯鑫这样对我说. 在经历了36个涨停之 ...
- nginx平台初探(100%)
http://tengine.taobao.org/book/chapter_02.html 初探nginx架构(100%)¶ 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么 ...
- Ext.grid.Panel表格分页存储过程
/*首先需要引入两个Extjs插件类 Ext.ux.data.PagingMemoryProxy和Ext.ux.ProgressBarPager这两个类*/ /*下面是控制弹出窗体放大缩小时窗体居中的 ...
- nginx+uwsgi 部署 django
预装:nginx, django Django站点tree |Site |-----Blog(自建的项目) |-----Manage.py |-----Site(setting url wsgi-. ...
- PHP内核探索之变量(7)- 不平凡的字符串
切,一个字符串有什么好研究的. 别这么说,看过<平凡的世界>么,平凡的字符串也可以有不平凡的故事.试看: (1) 在C语言中,strlen计算字符串的时间复杂度是?PHP中呢? ...
- 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
http://www.jb51.net/article/27616.htm 有次同事提出开发使用的mysql数据库连接很慢,因为我们的mysql开发数据库是单独一台机器部署的,所以认为可能是网络连 ...
- Android 手机卫士5--手机防盗
1,界面介绍 跳转到导航界面的第1个,描述功能 跳转到导航界面的第2个,必须,绑定sim卡,才可以跳转到第三个界面跳转到导航界面的第3个,必须输入电话号码,(两种途径(1,输入2,选择))跳转到导航界 ...
- 【笔记】InnoDB内存分配
原文:http://www.mysqlperformanceblog.com/2006/05/30/innodb-memory-usage/ 有很多问题是有关InnoDB如何分配内存的.这里我试图解释 ...