ios 得用代理反向传值

应用场景:有时时候从界面A跳转到界面B,界面B在返回的时候需要将处理的结果传递给A.

实现思路:1,定义一个负责传值的协义,界面A拥有该协义属性,并实现该协义中的方法

2,界面B也拥有该协义属性(代理要求两者都具有相同对象的引用 ),然后在返回的时候获取界面A的引用指针,并且指定B中协义的调用目标为A,调用协义中的传值方法.

具体代码:

A的头文件 :

#import <UIKit/UIKit.h>

@protocol passValueDelegate <NSObject>

-(void) setValue:(NSString *)param;

@end

@interface ViewController :
UIViewController

@property
id<passValueDelegate> passValueDelegate;

@end

A的实现文件 :

#import "ViewController.h"

#import "ViewController2.h"

@interface
ViewController ()

{

}

@end

@implementation ViewController

- (void)viewDidLoad

{

[super
viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

UIButton *btn =[UIButton
buttonWithType:UIButtonTypeRoundedRect];

btn.frame=CGRectMake(100,
100, 200,
40);

[btn setTitle:@"btn"
forState:UIControlStateNormal];

[btn addTarget:self
action:@selector(btn)
forControlEvents:UIControlEventTouchUpInside];

[self.view
addSubview:btn];

self.view.backgroundColor=[UIColor
redColor];

}

-(void) setValue:(NSString *)param{

NSLog(@"pass value is:%@",param);

}

-(void)btn

{

[self.navigationController pushViewController:[[ViewController2 alloc]init] animated:YES];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

B的头文件 :

#import <UIKit/UIKit.h>

@interface ViewController2 :
UIViewController

@end

B的实现文件:

#import "ViewController2.h"

#import "ViewController.h"

@interface
ViewController2 ()

@property
id<passValueDelegate> passValueDelegate;

@end

@implementation ViewController2

- (void)viewDidLoad

{

[super
viewDidLoad];

UIButton *btn =[UIButton
buttonWithType:UIButtonTypeRoundedRect];

btn.frame=CGRectMake(100,
100, 200,
40);

[btn setTitle:@"back"
forState:UIControlStateNormal];

[btn addTarget:self
action:@selector(btn)
forControlEvents:UIControlEventTouchUpInside];

[self.view
addSubview:btn];

}

-(void)btn

{

//  NSLog(@"%@",self.navigationController.childViewControllers[0]);

self.passValueDelegate=self.navigationController.childViewControllers[0];

[self.navigationController
popToRootViewControllerAnimated:YES];

[self.passValueDelegate
setValue:@"123456789"];

}

- (void)didReceiveMemoryWarning

{

[super
didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

ios 得用代理反向传值

时间: 2024-10-07 10:24:29

ios 得用代理反向传值的相关文章

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 代理反向传值

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

ios开发的block反向传值

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

模拟页面跳转,使用代理反向传值

假设有这样一个场景,app第一个页面是一个正方形,第二个页面有一个按钮,点击第一个的某按钮后,跳转到第二个页面,第二个页面修改正方形的边长,然后返回第一个页面,此时当前页面的矩形变化. import java.util.Objects; /**  * Created by itfanr on 14/11/11.  */ public interface ClickDelegate {     public void lengthDidChange(SecondPage sp , int leng

object-c 代理反向传值

A.h A.m B.h B.m

反向传值实例

反向传值实例 1.代理反向传值 #import <UIKit/UIKit.h> //声明一个类 @class LHTableViewController; //声明一个协议 @protocol LHTableViewControllerDelegate <NSObject> //协议中的方法 -(void)LHTablieViewController:(LHTableViewController *)LHTablieViewController Color:(UIColor *)c

uI基础--(5)UIViewController、中间传值、正向传值、反向传值

一.中间传值 全局变量 1.存放中间值(放在Delegate--比较麻烦) @property(nonatomic,strong) NSString *labelText; 2.保存值(放在应用程序对象里面) YYAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; appDelegate.labelText = label.text; 3.取数据 YYAppDelegate *appDelegate = [

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

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

iOS中多视图的传值 属性传值和代理传值

首先创建两个类 ,FirstViewController和SecondViewController,都继承于UIViewController 1 #import "AppDelegate.h" 2 #import "FirstViewController.h" 3 4 @interface AppDelegate () 5 6 @end 7 8 @implementation AppDelegate 9 10 11 - (BOOL)application:(UIAp