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

  • 相关阅读:
    5
    4
    2
    3
    1
    IOS js交互
    vm安装mac
    索引
    ORM 基础
    reids 日志no
  • 原文地址:https://www.cnblogs.com/linzhengbo/p/5617602.html
Copyright © 2020-2023  润新知