iOS 代理设计模式的应用——反向传值

设计一个代理模式需要六个步骤:

一、首先要先弄清楚谁是委托方,谁是代理方。

a.委托方和代理方是不分开的,所以互相引用对方的头文件

二、委托方:声明一个委托协议

a.既然是委托协议,那就必须在委托方的类中声明。类似一个公告,既然是要让别人知道的,所以自然就是在.h文件中声明。

b.只需声明要做的是什么,不需要告诉代理要怎么做。也就是说只要声明一个方法,不需要实现方法。

上代码:

三、委托方:声明一个委托代理属性

a.声明的作用就是给代理方提供一个接口拿到代理权,没有这个声明,就算能看到委托方的委托,也成为不了委托方的代理。那么,这个委托就毫无意义。

上代码:

四、代理方:遵循协议,成为委托方的代理

上代码:

五、代理方:执行委托方的委托方法

上代码:

六、委托方:检查代理方是否有遵循并执行协议

新手第一次写博,不对之处请多多包涵。希望和大家一起学习进步!

时间: 2024-11-05 23:22:15

iOS 代理设计模式的应用——反向传值的相关文章

你真的了解iOS代理设计模式吗?

OS中消息传递方式 在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息传递方式. 通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式. 代理:是一种通用的设计模式,iOS中对代理支持的很好,由代理对象.委托者.协议三部分组成. block:iOS4.0中引入的一种回调方法,可以将回调处理代码直接写在block代码块中,看起来逻辑清晰代码整齐. target action:通过将对象传递到另一个类中,在另一个类中将该对象当做target的方式,来调用该对象方法,从

ios代理设计模式

代理设计模式的作用:     1.A对象监听B对象的一些行为,A成为B的代理     2.B对象想告诉A对象一些事情,A成为B的代理   代理设计模式的总结:     如果你想监听别人的一些行为,那么你就要成为别人的代理     如果你想告诉别人一些事情,那么就让别人成为你的代理         代理设计模式的开发步骤     1.拟一份协议(协议名字的格式:控件名 + Delegate),在协议里面声明一些代理方法(一般代理方法都是@optional)     2.声明一个代理属性:@prop

Swift 使用代理和闭包(closure)反向传值

FirstViewController的代码 import UIKit class FirstViewController: UIViewController, SecondViewControllerDelegate { @IBOutlet weak var showTextLabel: UILabel! @IBOutlet weak var showDelegateTextLabel: UILabel! override func viewDidLoad() { super.viewDidL

ios代理的使用,正向传值,逆向传值

#import <UIKit/UIKit.h> #import "SubViewController.h" @interface ViewController : UIViewController<SubViewControllerDelegate> @end #import "ViewController.h" @interface ViewController () { SubViewController *_subViewControl

iOS 代理反向传值

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

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

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

ios 得用代理反向传值

应用场景:有时时候从界面A跳转到界面B,界面B在返回的时候需要将处理的结果传递给A. 实现思路:1,定义一个负责传值的协义,界面A拥有该协义属性,并实现该协义中的方法 2,界面B也拥有该协义属性(代理要求两者都具有相同对象的引用 ),然后在返回的时候获取界面A的引用指针,并且指定B中协义的调用目标为A,调用协义中的传值方法. 具体代码: A的头文件 : #import <UIKit/UIKit.h> @protocol passValueDelegate <NSObject> -(

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之Objective-C学习 代理设计模式

鉴于Objective-C是不支持多继承的,所以需要用协议来代替实现其他类的方法,所以有了代理设计模式. 代理,又称委托,delegation. 代理模式可以让一个单继承的类实现父类以外其他类的方法.代理也可以用于传值. 我们先来说说原理,最后再看看是如何传值的. 如图选取Objective-C File并选择Protocol创建文件后在该协议文件中写入方法. myProtocol.h @protocol myDelegation <NSObject> -(void)method1; -(vo