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

当我们自定义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. Qt学习笔记-1 开发环境建立

    关于Qt在这里不做过多介绍,吸引我的地方是有几点: 1.用C++开发语言: 2.多平台(wWindows.MAC.Linux.Android等): 3.界面所见几所得.其他的可以百度上了解: 从本文开 ...

  2. SQL 索引

    1.http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html 2 .聚簇索引和非聚簇索引的区别 3.聚集索引:只能有一个  (相当于字 ...

  3. jQuery的遍历方法

    1.jQuery中的map使用方法 <!DOCTYPE html> <html> <head> <style>p { color:red; }</ ...

  4. 虚方法(virtual)和抽象方法(abstract)的区别

    注:本文转载自 http://www.cnblogs.com/michaelxu/archive/2008/04/01/1132633.html 虚方法和抽象方法都可以供派生类重写,它们之间有什么区别 ...

  5. cocos2d-x CCSpriteBatchNode

    转自:http://www.cnblogs.com/jiackyan/archive/2013/04/14/3019880.html 1.先说下渲染批次:这是游戏引擎中一个比较重要的优化指标,指的是一 ...

  6. Windows Server 2012配置开机启动项

    1.运行 shell:startup 命令,如下:

  7. 博客转移到lyso.me

    博客转移到http://lyso.me :)

  8. hdu 5437 Alisha’s Party 优先队列

    Alisha’s Party Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_sh ...

  9. C# 指针(unsafe与fixed的使用)

    c#在默认情况下生成的都是安全代码,即进行了代码托管(.NET的CLR机制好处之一是,进行代码托管,适时的释放内存,程序员便不必考虑资源的回收问题),而此时,指针不能出现在安全代码的编译条件下. 一. ...

  10. PHP中的全局变量$_SERVER

    1.常用 $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关.$_SERVER['argv'] #传递给该脚本的参数.$_SERVER['argc ...