关于协议传值

//  .h 内部的声明部分  (即:fourthController )

//1 声明协议

//UI中的协议名称为,当前类名 + Delegate

@protocol FourthViewControllerDelegate <NSObject>

//不加说明:默认是必须实现的方法

- (void)pushValue:(NSString *)text uicolor:(UIColor *)color;

@end

@interface FourthViewController : UIViewController

//2 声明协议的代理对象

@property (nonatomic, assign)   id <FourthViewControllerDelegate>  delegate;//代理对象

@end

// .m 内部的实现

// 3, 执行协议的方法   (写在具体需要传值的方法内部)

if (self.delegate != nil && [self.delegate respondsToSelector:@selector(pushValue: uicolor:)] ) {  //代理不为空  代理内容接受

[self.delegate pushValue:self.field.text uicolor:self.view.backgroundColor];//代理执行此方法,并且此时实现需要传的值

}

// 接收传值的内部 的   实现部分

// 4 接受代理

@interface ThirdViewController : UIViewController<FourthViewControllerDelegate>

// 5 指定代理对象为当前的视图控制器

fourthController.delegate = self;

// 6 实现声明的协议方法

//6 实现协议方法(写在当前视图控制器的  .m  内部)

- (void)pushValue:(NSString *)text uicolor:(UIColor *)color{

self.label.text = text;

self.view.backgroundColor = color;

}

注意:协议传值的 六步  一定要指定代理对象,并且声明代理对象的语义类型是 assign 类型的;

时间: 2024-10-18 00:43:53

关于协议传值的相关文章

属性传值,协议传值,block传值,单例传值四种界面传值方式

一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N + 1界面传值.而在此基础上,必须知道跳转界面的明确位置及所要传的值的具体类型.在第二个界面中声明所要传值 类型的属性. @interface SecondViewController : UIViewController //声明一个字符串属性来保存第一个界面传过来的字符串内容 @propert

属性传值和协议传值 &nbsp;

属性传值三部..... 1.在第二个页面.h中,定义name //属性传值............1 @property (nonatomic, copy)NSString *name; 2.在第一页.m中然后在推出第二个页面前,把第一个按钮的title值传给第二个页面定义的name SecondViewController *secondVC = [[SecondViewController alloc] init]; //属性传值..............2 secondVC.name =

UI 多个视图控制器(UIViewController)间的 协议传值

1 #import <UIKit/UIKit.h> 2 3 4 5 //1.协议传值 6 7 // 协议由后面的视图控制器制定 8 9 @protocol secondDelegate <NSObject> 10 11 12 13 //协议的方法需要带一个或多个参数 14 15 - (void)passValueWithString:(NSString *)string; 16 17 18 19 @end 20 21 22 23 @interface secondViewContr

swift 协议传值的实现

首先呢说下结构 一个ViewController 一个ModelViewController 在ModelViewController中定义了一个协议 这个逻辑 从第一个界面进入第二个界面  从第二个界面回到第二个界面并通过协议传值回到第一个界面 打印输出值 ModelViewController.swift protocol lwkDelegate {//定义协议 func changeString(newString:String) } 在这个ModelViewControler类中实现一些

页面传值:属性,协议,Block传值

1.属性传值和协议传值 1 #import "RootViewController.h" 2 #import "SecondViewController.h" 3 #warning 第四步:签订协议 4 @interface RootViewController ()<SecondViewControllerDelegate> 5 @property(nonatomic,strong)UILabel *showTextLable; 6 @end 7 8

IOS dismissViewControllerAnimated 传值

1.新建PassValueDelegate.h @protocol PassValueDelegate <NSObject> -(void)passValue:(NSString *)value; @end 2. @interface AViewController : UIViewController<PassValueDelegate> -(void)passValue:(NSString *)value{ NSLog(@"get backcall value=%@&

界面之间的传值

用导航的两个视图之间的传值: 方式有三种: 1.属性传值:第一个页面到第二个页面的传值 2.协议传值:第二个页面到第一个页面的传值 3.Block传值:第二个页面到第一个页面的传值 介绍属性和代理传值: 1.分别在两个视图上面都添加输入框和label,并且都设置为属性 2.第一个页面到第二个页面的传值,给第二个页面设置一个字符串属性,用来接受第一个页面传过来的值,然后在第二个页面给label赋值,(注:因为第一个页面到第二个页面label重新开辟空间,所以,在直接在这里给label赋值的没有用的

工作记录8:iOS 传值问题总结(7种传值完美介绍)

1.属性传值 前向后传值. 记住: /* 1: 属性传值第一步需要用到什么类型就定义什么样的属性 2: 从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页面推到下一个页面 */ MainViewController与SecondViewController两个视图 控制器 ,点击MainViewController中的按钮将跳转到SecondViewController视图,同时想要传递一个值过去.这时可以利用属性传值. 首先SecondViewCo

传值(VIP)

页面间传值主要分为:1.属性传值.2.协议传值.3.单例传值: 界面之间的传值: 1.从前往后:属性传值 2.从后往前:代理传值 3.多界面之间的传值 — 单例传值 单例传值: 单例:(1.只有一个对象:2.程序退出时空间才会被回收) [UIScreen mainScreen] [NSBundle mainBundle] [UIApplication shareApplication] [NSUserDefaults  standarUserDefaults] [NSFileManager de