个人理解(估计,半年一年后,在看到这篇文章的时候,会觉得,当时真的弱爆了)

当我们自定义view的时候,比如说view上面有几个按钮,那么我们在别的地方使用这个view的时候,怎么来处理这些点击事件呢。
 
就可以使用代理来实现这个需求了(就是处理view上的按钮的点击事件)
 
首先是先创建一个view,命名为ViewWithButtons,并且创建其对应的xib文件(这个在创建view的时候,勾选创建xib的那项并不能点击,所以需要我们手动创建:new->empty命名为ViewWithButtons.xib,然后在xib中,拖一个view进去,并且将这个view与ViewWithButtons关联起来)
然后在这个视图上拖几个按钮,并且给上不同的tag值。将这几个按钮的点击事件连接到ViewWithButtons.m中

ViewWithButtons.h部分的代码。

@protocol ViewWithBuutonsDelegate<NSObject>

@required

-(void)buttonClickedWithTag:(NSInteger)tag;

@end

@interface ViewWithButtons : UIView

@property(nonatomic)id <ViewWithBuutonsDelegate> delegate;

@end

 
.m部分的代码

- (IBAction)buttonClick:(UIButton *)sender {

if ([self.delegate respondsToSelector:@selector(buttonClickedWithTag:)]) {

[self.delegate buttonClickedWithTag:sender.tag];

}

}

我理解的就是,如果self.delegate responds 了后面的方法,那么,就,,
 
在控制器部分的代码是:

#import "ViewController.h"

#import "ViewWithButtons.h"

@interface ViewController ()<ViewWithBuutonsDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

ViewWithButtons *view = [[[NSBundle mainBundle]loadNibNamed:@"ViewWithButtons" owner:self options:nil]lastObject];

view.delegate = self;

[self.view addSubview:view];

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

}

-(void)buttonClickedWithTag:(NSInteger)tag{

NSLog(@"%lu",tag);

}

 
 
需要注意的是,我们在使用由xib创建的视图的时候,需要用到的方法是[[[NSBundle mainBundle]loadNibNamed:@"ViewWithButtons" owner:selfoptions:nil]lastObject];

代理的使用 一(helloworld级别)的更多相关文章

  1. JDK动态代理

    一.基本概念 1.什么是代理? 在阐述JDK动态代理之前,我们很有必要先来弄明白代理的概念.代理这个词本身并不是计算机专用术语,它是生活中一个常用的概念.这里引用维基百科上的一句话对代理进行定义: A ...

  2. hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解

    序言 很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要 ...

  3. 【设计模式】学习笔记17:代理模式之保护代理与Java反射

    本文出自   http://blog.csdn.net/shuangde800 本笔记内容: 1. Java动态代理,反射机制 2. 保护代理 3. 应用保护代理实现的约会系统 ----------- ...

  4. java 动态代理理解

    动态代理,顾名思义就是动态创建一个代理对象,无需手动为被代理类创建一个代理类,java的动态代理通过Proxy类和Invocation接口实现,代码如下: //被代理接口 public interfa ...

  5. Hibernate学习(八)———— Hibernate检索策略(类级别,关联级别,批量检索)详解

    序言 很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要 ...

  6. JDK动态代理和cglib代理详解

    JDK动态代理 先做一下简单的描述,通过代理之后返回的对象已并非原类所new出来的对象,而是代理对象.JDK的动态代理是基于接口的,也就是说,被代理类必须实现一个或多个接口.主要原因是JDK的代理原理 ...

  7. OpenCL学习笔记(三):OpenCL安装,编程简介与helloworld

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. OpenCL安装 安装我不打算 ...

  8. Mybatis之入门Helloworld程序

    本篇我们来实现一个Mybatis的Helloworld级别的一个示例程序. 一.搭建基本环境 1.基本开发环境搭建,这里选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.8,m ...

  9. 【Geek议题】当年那些风骚的跨域操作

    前言 现在cross-origin resource sharing(跨域资源共享,下简称CORS)已经十分普及,算上IE8的不标准兼容(XDomainRequest),各大浏览器基本都已支持,当年为 ...

随机推荐

  1. ASP.NET基础系列

    一.HttpContext概述 1).如何获取对象: 在WebForm或类库(包括MVC)项目中,通过Current静态属性,就能够获得HttpContext的对象: HttpContext cont ...

  2. 用intent打开各种类型文件

    public class MyIntent { //android获取一个用于打开HTML文件的intent public static Intent getHtmlFileIntent( Strin ...

  3. Android设计模式—策略模式

    1.策略模式概念 定义一系列算法,把他们独立封装起来,并且这些算法之间可以相互替换.策略模式主要是管理一堆有共性的算法,客户端可以根据需要,很快切换这些算法,并且保持可扩展性. 策略模式的本质:分离算 ...

  4. 将Excel数据导入MySql

    1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉..),假如存到“D:\data.txt”这个位置里. 2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命 ...

  5. 什么是IDOC,以及IDOC的步骤

    创建IDOC:   第一步:WE31 创建IDOC所包含的字段.   第二步:WE30 创建IDOC 把Segment分配给IDOC   第三步:WE81  创建信息类型   第四步:WE82   把 ...

  6. windows平台下php版本问题–VC6/VC9和TS/NTS

    php下载页面中提供了4个下载版本,是vc6/vc9 与 TS/NTS的组合 VC6:legacy Visual Studio 6 compiler,就是使用这个编译器编译的.        VC9: ...

  7. 六、Socket之UDP异步传输文件-实现稳定的文件传输

    上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...

  8. C#_约束 实现可排序单链表

    using System; using System.Collections.Generic; using System.Linq; using System.Text; /* 使用 约束 实现可排序 ...

  9. python--判断数据类型可不可变

    内存是一块空间,可以比喻成一个比较大的房子,定义一个变量就是在大房子中建立一个小房子,判断一个数据类型可不可变,就是看在这个这个大房子中有没有新建小房子,可以通过id来判断,如果id没有变化则是不可变 ...

  10. oracle 不转义 &

    在为表加注释,遇到有些注释包含'&' 但又不想写eacape, 在sqlplus下,set define off   即可将&输入到数据库中.