协议、反向传值
来源:互联网 发布:易语言小软件 编辑:程序博客网 时间:2024/06/07 15:31
- 总体:
谁想做什么事,谁就定义协议,并设置一个代理;
谁想帮做什么事,谁就遵守协议并实现方法。
//// SecondVC.h// delegate//// Created by yy on 2017/11/17.// Copyright © 2017年 zg. All rights reserved.//#import <UIKit/UIKit.h>@class SecondVC;// 1.自己声明的协议需要遵守<NSObject>协议// respondsToSelector方法是在<NSObject>协议中声明的方法。// 不遵守的话,self.delegate失去了<NSObject>协议中的所有方法声明,所以就导致方法不可识别.@protocol passValueDelegate <NSObject>@optional- (void)viewController:(SecondVC*)secondVC passInfo:(id)info;@end@interface SecondVC : UIViewController@property (weak, nonatomic) IBOutlet UITextField *textField;@property (weak, nonatomic) IBOutlet UIButton *backToFirstVCButton;// weak修饰,防止循环引用,执行self.delegate = self,引用计数不会加1,在dealloc中会释放;// strong的话,不会释放,循环引用,内存泄漏@property (nonatomic,weak)id<passValueDelegate>passDelegate;// 2.定义代理@end
//// SecondVC.m// delegate//// Created by yy on 2017/11/17.// Copyright © 2017年 zg. All rights reserved.//#import "SecondVC.h"@interface SecondVC ()@end@implementation SecondVC- (void)viewDidLoad { [super viewDidLoad]; [self.backToFirstVCButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];}-(void)buttonClick:(UIButton*)sender{ // 代理对象存在时且可以响应代理,这时,执行代理 if (self.passDelegate && [self.passDelegate respondsToSelector:@selector(viewController:passInfo:)]) { [self.passDelegate viewController:self passInfo:self.textField.text]; } [self dismissViewControllerAnimated:true completion:nil];}@end
//// ViewController.m// delegate//// Created by yy on 2017/11/17.// Copyright © 2017年 zg. All rights reserved.//#import "FirstVC.h"#import "SecondVC.h"@interface FirstVC ()<passValueDelegate> // 遵守协议@end@implementation FirstVC- (void)viewDidLoad { [super viewDidLoad]; [self.toSecondVCButton addTarget:self action:@selector(toSecond:) forControlEvents:UIControlEventTouchUpInside];}- (void)toSecond:(UIButton*)sender{ SecondVC * secondVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"SecondVC"]; secondVC.passDelegate = self; // 代理赋值 [self presentViewController:secondVC animated:true completion:nil];}// 实现代理的方法- (void)viewController:(SecondVC *)secondVC passInfo:(id)info{ self.label.text = info;}@end
阅读全文
0 0
- 协议、反向传值
- iOS ---反向传值 协议传值
- ios反向传值--代理协议
- 浅析 协议和block的反向传值
- iOS 常用的反向传值协议的使用
- iOS Delegate传值 协议两个页面反向传值
- cocos2dx反向传值
- 正向反向传值
- 代理反向传值
- iOS 反向传值
- android_44_activity反向传值
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- iOS开发利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- RFC903_反向地址转换协议
- RARP:反向地址转换协议
- RARP反向地址转换协议
- 代码块反向传值以及反向处理UI
- Java读取文本文件中文乱码问题
- 微信小程序三级联动(数据在我的资源里)
- css+div水平垂直居中布局总结(3种方案)
- 一些常用的小玩意之redis
- 用Thread类创建线程
- 协议、反向传值
- You are using safe update mode and you tried to update a table without a WHERE that uses a KEY colum
- 海思Hi35XX调试串口添加root登录密码
- apache+php+mysql常见集成环境安装包
- 【JavaScript学习】DOM:Document类型
- 钉钉服务端开发文档
- Mysql查询将列里面的值替换为别的值但是实际值不变
- python踩坑记录
- jQuery表格常用操作方法-增加,查询,删除,排序,移动,全选