您的位置:首页 > 移动开发 > Objective-C

objective-c 协议和委托

2012-05-27 09:47 357 查看
objective-c protocol delegate
protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。 
delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。
当一个A view 里面包含了B view
b view需要修改a view界面,那么这个时候就需要用到委托了。
需要几个步骤
1。首先定一个协议
2。a view实现协议中的方法
3。b view设置一个委托变量
4。把b view的委托变量设置成a
view,意思就是 ,b view委托a view办事情。
5。事件发生后,用委托变量调用a view中的协议方法
例子:
B_View.h:
@protocol UIBViewDelegate <NSObject>

@optional

- (void)ontouch:(UIScrollView *)scrollView; //声明协议方法

@end

@interface BView : UIScrollView<UIScrollViewDelegate>

{

 id< UIBViewDelegate > _touchdelegate; //设置委托变量

}

@property(nonatomic,assign) id< UIBViewDelegate > _touchdelegate;

@end

B_View.mm:

@synthesize _touchdelegate;

- (id)initWithFrame:(CGRect)frame {

if (self = [super initWithFrame:frame]) {

 // Initialization code

 _touchdelegate=nil;

 }

 return self;

}

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event

{

 [super touchesBegan:touches withEvent:event];


 if(_touchdelegate!=nil && [_touchdelegate respondsToSelector: @selector(ontouch:) ] == true)

  [_touchdelegate ontouch:self];  //调用协议委托

}

@end
A_View.h:
@interface AViewController : UIViewController < UIBViewDelegate >

{

 BView *m_BView;

}

@end


A_View.mm:

- (void)viewWillAppear:(BOOL)animated

{

 m_BView._touchdelegate = self; //设置委托

 [self.view addSubview: m_BView];


}

- (void)ontouch:(UIScrollView *)scrollView

{

    //实现协议

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息