建立两个页面 A 和 B,我们假设他们的文件名为ControllerAControllerB

  由A页面,点击跳转到B页面。在B页面中,进行一些操作,并得到一个值,并将这个值传回给A页面,并在A页面上显示出来(或者进行其他的操作)

  首先,我们要在ControllerB .h 文件中声明协议(在interface那一行的前面),同时声明委托代理人(在interface那一行的后面):

@protocol ControllerBDelegate //声明协议,一般格式是 类名+delegate

//代理方法
@required//required表示一定要实现,optional则是可以选择实现的 -(void)sendAMessage:(NSString*)msg;
//-(void)触发事件名:(参数类型)参数名; @end @interface ControllerB :UIViewController //委托代理人,注意是weak
@property(nonatomic,weak)id delegate; @end

 接下来在 ControllerB.m 的文件中写入:

-(void)whenSomethingHappened //controllerB中的事件被触发,比如你可以让一个按钮的点击事件为这个函数
{
   NSString *message = @"世界属于三体!";
if([_delegate respondsToSelector:@selector(sendAMessage:)]) { //如果协议响应了sendMessage:方法
[ _delegate sendAMessage:message ];//通知执行协议方法
}
}

  接下来,在 ControllerA.m 文件中 增加delegate的定义:

@interface ControllerA()<ControllerBDelegate>

@end

  并且在 ControllerA.m 中实例化一个controllerB,同时一定要在实例化controllerB之后添加下面这个语句将controllerB的被委托人设置为自己。

ControllerB *controllerB = [[controllerB alloc] init];
controllerB.delegate=self;//设置代理

  

  之后在 controllerA.m 文件中就可以添加:

-(void)sendAMesaage:(NSString*)message
{
  doWhatYouWant
/*
  当B中触发了delegate事件之后,A也会被触发这里所写的事件,同时可以使用由B传来的值
  比如这个例子里传来的值 message 是就是前面我们自定义的那句@“世界属于三体!”
  */
}

[OC] Delegate的使用的更多相关文章

  1. oc Delegate

    把内部的状态通知给外界,我们可以制定一个变量,然后这个变量从外界来指定,之后我们可以通过变量去通知给外界有什么发生了. 按照上文讲的到新建一个protocol,名字为IPeople #import & ...

  2. 在OC中调用Swift类中定义delegate出现:Property 'delegate' not found on object of type ...

    找了许久没找到答案, 在下面的链接中, 我解决了这个问题: http://stackoverflow.com/questions/26366082/cannot-access-property-of- ...

  3. 从OC和C#中找乐趣:相同又不同的delegate

    不想说话,本来第一段打了一大堆废话,结果浏览器崩溃了...直接进入正题吧.看Demo: C#里面也有delegate,我今天的目的就是模仿着OC里面的写法来写一个网络请求模拟类.先建一个“Protoc ...

  4. OC语言-block and delegate

    参考博客 OC语言BLOCK和协议 iOS Block iOS Block循环引用精讲 iOS之轻松上手block 深入浅出Block的方方面面 Block apple官方参考 1.定义一个block ...

  5. OC中APPDelegate[[UIApplication shareApplication]delegate]]Swift实现

    直接上代码: var myDelegate:AppDelegate? myDelegate = UIApplication.sharedApplication().delegate as? AppDe ...

  6. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  7. iOS开发--JS调用原生OC篇

    JS调用原生OC篇 方式一(反正我不用) 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理. 我写了一个简单的HTML网页和一个btn点击 ...

  8. OC编程之道-接口适配之适配器

    已有的类与新的接口之间不兼容的问题相当普遍,人们已为它找到了一个解决方案.这个解决方案就是适配器. 1 何为适配器 what 适配器的主要作用是把被适配者的行为传递给管道另一端的客户端. 将一个类的接 ...

  9. JS代码和OC代码的相互调用

    JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...

随机推荐

  1. Git使用五:回到过去

    reset:将仓库里面的内容恢复回暂存区,类似于从仓库里检出文件到暂存区checkout:将暂存区的文件恢复回工作区,即,把暂存区的文件检出到工作区 下面是之前三次提交的内容 三个区域的文件状态: 执 ...

  2. favicon.ico--网站标题小图片二三事

    前言: 什么是favicon? 直接用图说话:这个就是favicon favicon.ico 是一种格式,一般用于网页地址栏前或者在标签上以缩略方式显示网站标志,也可以拖曳favicon到桌面以建立到 ...

  3. C++ friend友元函数和友元类(转)

    一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们来介绍一种例外情 ...

  4. TypeScipt学习

    TypeScript具有类型系统,且是JavaScript的超集.它可以编译成普通的JavaScript代码. TypeScript支持任意浏览器,任意环境,任意系统并且是开源的.Ts主要用于解决那些 ...

  5. 解决response.setHeader("Content-disposition" 中文乱码问题

    Content-Disposition中文乱码 Response.setHeader(”Content-Disposition”, “attachment; filename=” + fileName ...

  6. Oozie如何和安装部署

    1.Oozie的简单介绍: .Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流,同时Oozie还是一个Java web程序,运行在Java Servl ...

  7. LibreOJ β Round #2

    题解: 都是不错的技巧题目 t1暴力就不说了 t2dp是比较显然的 然后发现都是0,1用bitset优化 代码非常短 t3容易发现这个东西在不断合并 于是我们想到启发式合并 存疑:splay启发式合并 ...

  8. ionic2中使用moment.js

    安装 npm i moment --save 使用 import { Pipe, PipeTransform } from '@angular/core'; import Moment from 'm ...

  9. html5的audio实现高仿微信语音播放效果Demo

    HTML部分: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  10. ConcurrentModificationException(并发修改异常)的解决

    [异常解释] ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常.[产生的原因] 迭代器是依赖于集合而存在的,在判断成功后,集合 ...