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学习做备忘录为目的,在思路或是步骤顺序上若有混乱,请谅解!大家若有好的方法也请不吝赐教。

时间: 2024-11-05 06:10:05

block 页面传值小结的相关文章

block 页面传值

Block 传值 .h typedef void(^CountBlock)(NSIntegerfigure); -(void)CountWithFigureBlock:(CountBlock)figureBlock; .m CountBlock cBlock; #pragma mark - 块传值调用的方法 -(void)CountWithFigureBlock:(CountBlock)figureBlock { cBlock=figureBlock; } 块的使用 InCashViewCont

Block页面传值的简单使用

1.我要实现一个界面一个界面输入框输入的内容在另一个界面显示,实现效果如下图:               2.在第二个界面将block声明为属性,代码如下 3.在点击第二个界面中"Back"按钮的响应方法里将声明的Block传值传出去,代码如下 4.在第一个界面的button按钮的响应事件里面将block实现,代码如下: Block就是如此简单,以后常使用这个

Block的使用--页面传值方法及探究

上一篇讲了Block的简单实用,这一篇则是讲述Block的最经常也是比较简单的用法,个人认为这是block相对其他页面传值方式比较好的一个用处.也顺便总结下这两天对Block的理解的一些注意点. 对于页面传值这种情况,我们一般在程序里有几种处理的方法. 1.设置Delegate 2.使用NotificationCenter 3.使用Block 4.KVO页面传值 5.NSUserDefault等文件存储机制做中间介质传递(但比较浪费,用在页面传值上几率很低) 这一篇博客我只讲一下Block的一般

页面传值--Delegate/Block/KVO/Notification

上一篇讲了Block的页面传值.这里也就顺便把常用的几种页面传值放上来.这里我写了一个Demo:https://github.com/ChenNan-FRAM/TransferDataDemo .想下的可以上去下载来看看. 这里主要把上一篇提到的四种方式说一下(话不多说直接核心代码讲). 1.使用Delegate 2.使用Notification 3.使用Block 4.使用KVO 定义及使用 第二个界面.h 头文件 //定义一个委托协议 @protocol NextVCDelegate <NS

页面传值总结Block

// // AppDelegate.m // 页面传值总结 // // Created by qianfeng on 15/6/13. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import "AppDelegate.h" #import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate

ios 页面传值

今天看了一下ios 页面传值的方式大致分为四种: 代理delegate block 通知 单例class 今天试了一下前三种,在这里记录一下 下面示例是有两个页面,每个页面都有一个按钮Button,点击第一个页面的按钮回调到第二个页面,再点击第二个页面回跳转道第一个页面,第一个按钮的标题变为第二个按钮传回的值. 代理delegate 代理似乎是我的心结,能用API 但是就是不会自己写,这也是今天会写传值的原因. 假设两个页面传值,协议类应该写在哪,代理应该定义在那个页面? 总结的时候我觉得可以这

block的传值和使用

block的传值 1.第一页中声明一个block,需要传入一个颜色,让当前的view变色 //声明一个block,需要传入一个颜色,让当前的view变色 void(^changeColor)(UIColor *color) = ^(UIColor *color){ self.view.backgroundColor = color; }; 2. 第一页中//block传值---------将block给第二个页面 SecondViewController *secondVC = [[Second

05-19Web端控件,页面传值

一.记忆Web端控件需要配合HTML 中的Form表单元素 1.Label 会被编译成span标签 属性: Text:文本内容 CssClass:CSS样式 Enlabled:是否可用 Visible:是否可见 2.Literal 空的,C#会把里面的Text内容直接作为网页代码传过去,比如Text里面写上<input type="button" />会直接在网页中插入一个按钮 属性: Text:内容 文本类 文本框      <input type="te

Web端控件,页面传值

一.记忆Web端控件需要配合HTML 中的Form表单元素 Label - 在HTML中被编译成<span> Literal - 在HTML中被编译成空 文本类 文本框      <input type="text">                        TextBox 密码框      <input type="password">                 TextBox 属性TextMode="pa