码迷,mamicode.com
首页 > 其他好文 > 详细

block 页面传值小结

时间:2016-06-26 12:46:16      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

我以自己项目中的一个模块为例,首先有两个页面,第一个页面为显示城市页面,第二个页面为选择要使用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 页面传值小结

标签:

原文地址:http://www.cnblogs.com/linzhengbo/p/5617602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!