zoukankan      html  css  js  c++  java
  • [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
    {
        //实现协议
    }
  • 相关阅读:
    数组-11. 猴子选大王
    *数组-10. 求整数序列中出现次数最多的数
    数组-07. 求一批整数中出现最多的个位数字
    *数组-05. 字符串字母大小写转换
    数组-04. 查找整数
    《结对-网页贪吃蛇-最终程序》
    Forward团队-爬虫豆瓣top250项目-项目进度
    《结对-HTML贪吃蛇游戏项目-测试过程》
    课后作业-阅读任务-阅读提问-2
    《20171005-构建之法:现代软件工程-阅读笔记》
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3193888.html
Copyright © 2011-2022 走看看