IOS传值之代理传值(一)
1、使用代理delegate的方法
2、使用通知Notification的方法
3、KVO等方法
4、block传值
~~~~~~~~~~~~~~~~
1、使用代理delegate的方法
#import "ViewController.h"
#import "SubViewController.h"
@interface ViewController ()<subViewDelegate>
@property(nonatomic,strong)UILabel *label;
@end
@implementation ViewController
-(UILabel *)label{
if (_label==nil) {
_label=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 150, 30)];
_label.backgroundColor=[UIColor grayColor];
//[self.view addSubview:_label];
}
return _label;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self.view addSubview:self.label];
UIButton *button=[[UIButton alloc]initWithFrame:CGRectMake(100, 200, 100, 30)];
[button setBackgroundColor:[UIColor grayColor]];
[button setTitle:@"next" forState:UIControlStateNormal];
[button addTarget:self action:@selector(nextVC) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
-(void)nextVC{
NSLog(@"hhhhhhhhh");
SubViewController *subVC=[[SubViewController alloc]init];
subVC.delegate=self;
//[self.navigationController pushViewController:subVC animated:YES];
[self presentViewController:subVC animated:YES completion:^{
NSLog(@"cccccc");
}];
}
-(void)showStringFromSubView:(NSString *)textFieldtext{
self.label.text=textFieldtext;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
~~~~~~~~~~~~~~~~~~~~~~~
#import <UIKit/UIKit.h>
@protocol subViewDelegate <NSObject>
-(void)showStringFromSubView:(NSString *)textFieldtext;
@end
@interface SubViewController : UIViewController
@property(nonatomic,weak)id<subViewDelegate> delegate;
@end
#import "SubViewController.h"
@interface SubViewController ()
@property(nonatomic,strong)UITextField *textField;
@end
@implementation SubViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor=[UIColor whiteColor];
[self.view addSubview:self.textField];
//backBtn
UIButton *back= [UIButton buttonWithType:UIButtonTypeCustom];
back.frame=CGRectMake(100, 200, 50, 50);
[back setBackgroundColor:[UIColor grayColor]];
[back setTitle:@"back" forState:UIControlStateNormal];
[back addTarget:self action:@selector(backToPre) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:back];
}
-(void)backToPre{
[self.delegate showStringFromSubView:self.textField.text];
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"backToPre");
}];
}
-(UITextField *)textField{
if (_textField==nil) {
_textField=[[UITextField alloc]initWithFrame:CGRectMake(100, 100, 150, 30)];
_textField.backgroundColor=[UIColor grayColor];
}
return _textField;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~实现效果:




IOS传值之代理传值(一)的更多相关文章
- iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值
有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳 ...
- iOS 再谈 代理传值,block反向传值
本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个颜色的参数,当B跳转到A时,把这个颜色的参数传递给A,在A中利用这个颜色改变自己界面的颜色. 第1步:在发送者(界面B)中, ...
- Swift进阶之路(一)——单例模式、属性传值、代理传值、闭包传值
一.单例模式 单例模式是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象. 关于单例,有三个重要的准则需要牢 ...
- IOS pop使用代理传值
假如oneViewController页面push到OtherViewController页面,然后你想从OtherViewController页面pop到oneViewController页面的时候 ...
- iOS 学习 - 1.代理传值
代理的目的是改变或传递控制链.允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针.可以减少框架复杂度. 另外一点,代理可以理解为java中的回调监听机制的一种类似 优点:1.避免子类化带 ...
- iOS 闭包传值 和 代理传值
let vc = ViewController() let navc = UINavigationController(rootViewController: vc) window = UIWindo ...
- block传值和代理传值的异同点
delegate:1,“一对一”,对同一个协议,一个对象只能设置一个代理delegate,所以单例对象就不能用代理:2,代理更注重过程信息的传输:比如发起一个网络请求,可能想要知道此时请求是否已经开始 ...
- iOS 页面间传值 之 属性传值,代理传值
手机 APP 运行,不同页面间传值是必不可少,传值的方式有很多(方法传值,属性传值,代理传值,单例传值) ,这里主要总结下属性传值和代理传值. 属性传值:属性传值是最简单,也是最常见的一种传值方式,但 ...
- iOS的四种传值方式
传值有四种方法 : 1. 属性传值 2. 单例传值 3. 代理传值 4. block传值 一.属性传值 (前-->后) 1. 后面的界面定义一个属性 存放前一个界面传过来的值 ...
随机推荐
- 【第三篇】Volley图片加载之NetworkImageView代码分析
在Volley的使用之加载图片讲过使用NetWorkImageView进行图片加载的例子,本文着重讲解NetWorkImageView内部是如何实现的,以及Volley这个控件有什么特性. 1,通 ...
- Linux用户相关的操作命令
1.建用户: adduser phpq //新建phpq用户 passwd phpq //给phpq用户设置密码 2.建工作组 groupadd test //新建 ...
- uva 12356 Army Buddies
简单的并查集应用. #include<stdio.h> #include<string.h> #include<math.h> #include<algori ...
- 新项目引入gulp
1:安装npm:官网下载nodejs--https://nodejs.org/en/.进行安装npm;--http://jingyan.baidu.com/article/a17d528506d7f5 ...
- Java知识总结
...
- 第六十三节,html表格元素
html表格元素 学习要点: 1.表格元素总汇 2.构建表格解析 本章主要探讨HTML5中表格元素的用法.表格的主要用途是以网格的形式显示二维数据. 一.表格元素总汇 ...
- PAT 团体程序设计天梯赛-练习集 L2-009. 抢红包
没有人没抢过红包吧…… 这里给出N个人之间互相发红包.抢红包的记录,请你统计一下他们抢红包的收获. 输入格式: 输入第一行给出一个正整数N(<= 104),即参与发红包和抢红包的总人数,则这些人 ...
- 浙大pat 1048 题解
1048. Find Coins (25) 时间限制 50 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Eva loves t ...
- 转delphi中 formclose的事件 action:=cafree form:=nil分别是什么意思?
转自:http://www.cnblogs.com/jshchg/articles/1929894.html MDI子窗体关闭时用到的(以下摘自Delphi的帮助)caNone The form i ...
- OMCS开发手册(02) -- 多媒体连接器
OMCS开发手册(01) -- 多媒体设备管理器 一文,我们从Owner的角度详细描述了多媒体设备管理器的使用,本文我们将站在Guest的角度,描述OMCS中另一类组件/控件:多媒体连接器.多媒体连接 ...