iOS 代理协议传值

从ViewController跳转到FirstViewController, 在FirstViewController中传一个NSInteger值回来

ViewController.m

#import "ViewController.h"

#import "FirstViewController.h"

@interface
ViewController () <PassValueDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];

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

self.view.backgroundColor = [UIColor
whiteColor];

_myButton = [UIButton
buttonWithType:UIButtonTypeCustom];

_myButton.frame =
CGRectMake(20,
20, 100,
100);

[_myButton
setTitle:@"跳转"
forState:UIControlStateNormal];

_myButton.backgroundColor = [UIColor
redColor];

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

[self.view
addSubview:_myButton];

}

// button点击事件 跳转到FirstViewController

- (void)clicked:(UIButton *)button

{

FirstViewController *firVC = [[FirstViewController
alloc]
init];

firVC.passDelegate =
self;

[self
presentViewController:firVC animated:YES
completion:nil];

}

- (void)setValue:(NSInteger )value

{

NSLog(@"value ===== %ld", (long)value);

}

@end

FirstViewController.h

// 签协议  以及方法(名子自己起,类型为要传的值的类型)

@protocol PassValueDelegate <NSObject>

- (void)setValue:(NSInteger)value;

@end

@interface FirstViewController :
UIViewController

// 签代理  属性

@property(nonatomic, assign)
id<PassValueDelegate> passDelegate;

@property(nonatomic, assign)
NSInteger number;

@end

FirstViewController.m

#import "FirstViewController.h"

@interface
FirstViewController ()

@end

@implementation FirstViewController

- (void)viewDidLoad {

[super
viewDidLoad];

// Do any additional setup after loading the view.

self.view.backgroundColor = [UIColor
greenColor];

_myButton = [UIButton
buttonWithType:UIButtonTypeCustom];

_myButton.frame =
CGRectMake(20,
20, 100,
100);

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

[self.view
addSubview:_myButton];

_number = 1000;

}

//代理遵从协议的方法

- (void)clicked:(UIButton *)button

{

[self.passDelegate
setValue:_number];

[self
dismissViewControllerAnimated:YES
completion:nil];

}

时间: 2024-10-08 05:35:10

iOS 代理协议传值的相关文章

ios 页面传值

今天看了一下ios 页面传值的方式大致分为四种: 代理delegate block 通知 单例class 今天试了一下前三种,在这里记录一下 下面示例是有两个页面,每个页面都有一个按钮Button,点击第一个页面的按钮回调到第二个页面,再点击第二个页面回跳转道第一个页面,第一个按钮的标题变为第二个按钮传回的值. 代理delegate 代理似乎是我的心结,能用API 但是就是不会自己写,这也是今天会写传值的原因. 假设两个页面传值,协议类应该写在哪,代理应该定义在那个页面? 总结的时候我觉得可以这

iOS 页面传值的几种方式之NSNotificationCenter传值

接着上回说的iOS页面传值问题 传送门---------->iOS页面传值之代理传值 接下来我们说说NSNotificationCenter传值方式 在开始之前,我们首先得知道KVO模式 Key-Value Observing (KVO) 键值监听 就是说当你告诉通知中心一个Key 他会根据Value的变化做些事情,或者是获取一些数据 说上千回,不如用上一回. 我们在B控制器发送一个监听 [[NSNotificationCenter defaultCenter] postNotification

iOS委托传值

iOS委托传值方式在开发中占很重要的地位,可能对于初学者来说一时很难弄明白 博主也是通过不断的找资料,在开发中慢慢学会的! 首先我们假设有A,B两个控制器,A控制器中有一个textField和一个button,B控制器中有一个label 当我们点击A中的button时就得将textField里面的文本值传入到B中的label上显示 在A.h中我们做写入如下代码: 在A.m中的按钮点击事件中我们写入如下代码: 在B.h中导入A.h文件并遵循PassValueDelegate 协议然后实现协议中的方

iOS 代理协议

代理,又称委托代理(delegate),是iOS中常用的设计一种模式.顾名思义,它是把某个对象要做的事情委托给别的对象去做.那么别的对象就是这个对象的代理,代替它来打理要做的事.反映到程序中, 首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么.在iOS程序设计中,委托通过一种@protocol的方式实现,所以又称为协议.在iOS的SDK里面,UITableView.UITextField等都有用到这种设计模式. 协议,是多个类共享的一个方法列表,在协议中所列出的方法没有响应的实现,由其

iOS页面传值-wang

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给

ios block传值

iOS开发中的页面传值方式有很多种,最常见的是代理和属性传值方法,不过,block也可以传值,而且在一些特定的场合中,block传值会更简单,下面是一个我写的一个demo,大家可以参考一下. 在#import "AppDelegate.h"中,代码如下: 在第一个控制器中代码如下: 在第二个控制器的.h文件中代码如下: 在第二个控制器的.m文件中代码如下 以上就完成相应的两个界面之间的传值 版权声明:本文为博主原创文章,未经博主允许不得转载.

iOS页面传值的方式

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault) [摘要]本文是对iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault)的讲解,对学习IOS苹果软件开发有所帮助,与大家分享. iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notificatio

iOS block传值方法

iOS开发中的页面传值方式有很多种,最常见的是代理和属性传值方法,不过,block也可以传值,而且在一些特定的场合中,block传值会更简单,下面是一个我写的一个demo,大家可以参考一下. 在#import "AppDelegate.h"中,代码如下: 在第一个控制器中代码如下 在第二个控制器的.h文件中代码如下 在第二个控制器的.m文件中代码如下

iOS通知传值的使用

通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便.便捷,一个简单的Demo实现通知的跳转传值. 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IBAction)buttonClick:(id)sender { //添加 字典,将label的值通过key值设置传递 NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"te