• [ios]objective-c 协议和委托 (重点基础知识)


    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
    {
        //实现协议
    }
  • 相关阅读:
    Servlet开发
    HTML实现页面自动跳转的五种方法
    AVAYA话机管理
    AVAYA路由
    报关相关知识
    基本杆法
    AVAYA初始配置
    加塞和瞄准
    基本杆法图解
    AVAYA拨号计划
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3193888.html
Copyright © 2020-2023  润新知