objective-c之委托协议详细讲解

委托协议,相信是大多objective-c初学者非常疑惑的一个概念,下面我来给大家讲解讲解:

下面先让大家了解几个概念

protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。 
delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。
当一个A_View 里面包含了B_View
B_View需要调用A_View的一个弹出框,那么这个时候就需要用到委托了。
需要几个步骤
1。首先定一个协议UIBViewDelegate

2。A_View实现协议中的方法
3。B_View设置一个委托变量
4。把B_View的委托变量设置成A_View,意思就是 ,B_View委托A_View办事情。
5。事件发生后,用委托变量调用A_View中的协议方法

下面是UIBViewDelegate定义一个正式协议,代码如下:

//
//  UIBViewDelegate.h
//  test-protocol-delegate
//
//  Created by b126 on 12-4-1.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>


@protocol UIBViewDelegate <NSObject>

@optional
- (void)ontouch:(id)cc; //声明协议方法
@end
B_View中定义委托变量:

 IBOutlet id< UIBViewDelegate > _touchdelegate; //设置委托变量
B_View调用委托:

}
-(IBAction)test:(id)sender{
    [_touchdelegate ontouch:@"dd"];
}

A_View中实现响应:
- (void)ontouch:(id)cc{
    NSLog(@"你点击了我");
    UIAlertView *myalert = [[UIAlertView alloc] initWithTitle:@"通知" message:@"你点击了我" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:nil,nil];
    [myalert show];
    [myalert release];
}
有一个非常重要的事情,就是,A_View中一定要要让委托指向自己:

- (void)viewDidLoad
{
    [super viewDidLoad];
    b_view = [[B_View alloc] initWithNibName:@"B_View" bundle:nil];

    [self.view addSubview:b_view.view];
    b_view._touchdelegate  = self;//让委托指向自己
}

demo下载地址

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值