反向传值实例

反向传值实例

1.代理反向传值

#import <UIKit/UIKit.h>

//声明一个类
@class LHTableViewController;

//声明一个协议
@protocol LHTableViewControllerDelegate <NSObject>

//协议中的方法
-(void)LHTablieViewController:(LHTableViewController *)LHTablieViewController Color:(UIColor *)color;

@end

@interface LHTableViewController : UITableViewController

//定义一个协议的变量
@property (nonatomic, assign)id<LHTableViewControllerDelegate> delegate;

@end
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

      UIColor *color =datas[indexPath.row];

     //判断是否响应代理方法(是否有其他的类遵守了这个协议)

    if ( [_delegate respondsToSelector:@selector(LHTablieViewController:Color:)] ) {

        //调用代理方法
        [_delegate LHTablieViewController:self Color:color];
    }
    [self.navigationController popToRootViewControllerAnimated:YES];
}
#pragma  mark - LHTableViewController的代理方法
-(void)LHTablieViewController:(LHTableViewController *)LHTablieViewController Color:(UIColor *)color{
    //给背景颜色赋值
   self.view.backgroundColor = color;
}

2.block反向传值

#import <UIKit/UIKit.h>

//声明一个MyBlock的变量block
typedef void(^Myblock)(UIColor *color);

@interface LHTableViewController : UITableViewController

@property(nonatomic,strong)Myblock block;

@end
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

      UIColor *color =datas[indexPath.row];

   // 调用 把block回转
    if (_block) {
        _block(color);
    }

    [self.navigationController popToRootViewControllerAnimated:YES];
}
-(void)buttonClick:(UIButton *)button{
    LHTableViewController *nc = [[LHTableViewController alloc]init];
    [self.navigationController pushViewController:nc animated:YES];

    nc.delegate = self;

    nc.block = ^(UIColor *color){
        self.view.backgroundColor = color;
    };

}
时间: 2024-10-18 16:10:33

反向传值实例的相关文章

M牛C原创博客——MVC 模式中正向传值、反向传值

多vc之间的传值 1)正向传值 当AVC推出BVC时,a给b传值叫做正向传值 2)正向传值实现步骤 step1:bvc要提供一个公开的属性 //公开一个属性,用于接收其他类出入的字符串 @property(nonatomic,copy)NSString *message; step2:avc在推出bcc之前,为bvc公开的属性赋值 //1.创建要推出的bvc的实例 BViewController *bvc = [[BViewController alloc]initWithNibName:@"B

控制器之间反向传值

控制器之间反向传值 委托(代理) 首先我们定下一个协议protocol 1. #import <Foundation/Foundation.h>2.3. @protocol ChangeText <NSObject>4.5. -(void)changeText:(NSString *)str;6. @end 控制器a遵守协议ChangeText,并实现协议的方法,控制器b公开自己的一个遵守协议ChangeText的属性delegate,在控制器a的视图转到控制器b的视图时,b.de

cocos2dx 3.1从零学习(三)——Touch事件(回调,反向传值)

第三讲 Touch 前面两篇我们学习的内容,足够我们做一款简单的小游戏.也可以说,我们已经入门了,可以蹒跚的走路了. 本篇将讲解cocos2dx中很重要的touch回调机制.你肯定记得第一章做定时器时间的时候用过CC_CALLBACK_1宏定义,它让我们回调一个只有一个形参的函数来执行定时操作. 回调函数的实现(Lambda表达式) 学习本篇前请仔细学习一下C++11的特性,std::function和lambda表达式.C++11还引入了很多boost库的优秀代码,使我们在使用的时候不必再加b

OC10_代理反向传值

// // ProtectedDelegate.h // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> @protocol ProtectedDelegate <NSObject> - (void)bark; @end // // D

【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值

实验说明 (1)正向传值:比如A类里地值要传给B类用,就是我们先在A类中声明一个B类对象(当然B类头文件要import过来),然后把A类中得某个值传递给B类中得某个值(所以需要在B类中先准备一个变量来接受,就是用@property和@synthesize整个变量即可). (2)反向传值:比如需要把B类中的值传递给A类用.我们先在B类中写一个协议,协议里面有一个可以带参数的方法,这个参数就是我们要传递的值(这个协议也可以单独写,不一定写在B类中),然后B类遵循这个协议后,利用这个协议创建一个委托变

iOS 代理反向传值

在上篇博客 iOS代理协议 中,侧重解析了委托代理协议的概念等,本文将侧重于它们在开发中的应用. 假如我们有一个需求如下:界面A上面有一个button.一个label.从界面A跳转到界面B,在界面B的输入框中输入字符串,在界面A的label上显示.这是一个典型的反向传值的例子.这个例子的核心是:"在界面B的输入框中输入字符串,在界面A的label上显示".也就是说:"界面B委托界面A显示字符串,页面A是界面B的代理".委托方向代理方反向传值. 那么我们该怎么用代理设

Linux平台部署nginx反向代理实例

nginx有着优秀的代理性能,很多情况下,nginx常常被充当反向代理服务器负载后端应用web构建起一个高性能高可用的web集群(淘宝tengix ,京东的nginx集群都使用到了nginx反向代理功能),接下来给大家讲解Linux平台部署nginx反向代理实例. [本文档所介绍的内容适用于公司测试/生产等常见的nginx反向代理应用] 1. nginx环境部署前准备: 1.1相关软件以及系统 系统要求:Centos 6.0以上 (64位) 相关中间件:Nginx: 1.6.0 以上(包含1.6

ios开发的block反向传值

block 的反向传值,一直以来都是copy, 今天写出来用来加深印象, 也给一些懒哥们copy的方便些.不多说,直接上代码. #import <UIKit/UIKit.h> //第一步(第二个页面.h) typedef void (^secondVcBlock)(NSString*); @interface SecondViewController : UIViewController //第二步(第二个页面.h)声明一个属性 @property(nonatomic,copy)secondV

代理和block反向传值

代理传值: // SendViewController.h #import <UIKit/UIKit.h> @protocol SendInFor <NSObject> -(void)sendInForIdea:(NSString*)text; @end @protocol SendInForTwo <NSObject> -(void)sender:(NSString*)text; @end @interface SendViewController : UIViewC