• delegate参数解析(转)


    在Cocoa里面很多对象的初始化都有一个delegate参数,例如初始化一个ActionSheet
    [[UIActionSheet alloc]
       initWithTitle:@"标题"
       delegate:self
       cancelButtonTitle:@"取消按钮"
       destructiveButtonTitle:@"结束按钮"
       otherButtonTitles:nil];
    这里就有一个delegate参数,而我给的例子里面的值是self。
    那这个self是什么含义呢?
    还有什么其他可行参数么?
    答案如下:
    1,正如delegate的中文含义是“事件代理”,这里就是要为ActionSheet找一个代理。那么如果写self,那就意味着本地对象和本地类就是这个ActionSheet的“事件代理”。那么我们就应该在这个本地类里面写delegate的方法来回应。例如:
    - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
    {
    }
    2,本地类如果不是对象类的时候,是没有该对象(ActionSheet)的事件代理解析能力的,这时该怎么办呢?那么就应该在本地类加入对象类的“事件代理”协议(接口),如下:
    @interface aViewController : UIViewController <UIActionSheetDelegate>
    {
    }
    这里的<UIActionSheetDelegate>就告诉本地类去接收并可以响应ActionSheet的“事件”
    3,如果有多个ActionSheet在一个本地类中,这个事件代理该如果响应呢?
    方法如下:
    - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
    {
     if(actionSheet == 指定的actionSheet对象){}
    }
    事件代理方法的第一个参数就是发出事件代理的对象,所以可以进行比对后,作if参数调节。
    4,delegate后可使用nil值。这个就表示该对象不被代理。
    5,delegate后可以使用本地类可以访问的类对象,这样那个类对象就会收到ActionSheet的代理通知。例如:ClassB是ClassA的子类,ClassA中有一个需要代理的ActionSheet, ClassA可以通过这个delegate参数来指定ClassB作为这个ActionSheet的事件代理。
    此贴暂时就到这里,以后会进行完善,并添加“屏播”解释。
    标签:ActionSheet, delegate
    分类目录: 05 - 视图(View), Cocoa开发, iPhone开发, 实例  |  评论
    view的事件代理解释
    2009年06月11日, 4:02 下午
    D 对于开发基于视图(view)的Mac/iPhone程序的时候,这些事件代理(Delegate)是再重要不过了。我曾经是用无数NSLog来探测的各个事件代理的顺序的,哈哈
    loadView:
    (加载视图)
    - 建立层次结构
    - 在不使用 Interface Builder 的时候发生
    viewDidLoad:
    (视图已加载)
    - 加载附加的资源和数据
    viewWillAppear:
    (视图快要被显示)
    - 准备在屏幕上加载
    - 视图不会在每次显示重新加载
    viewDidAppear:
    (视图已被显示)
    - 动画和其他视觉元素被加载

  • 相关阅读:
    java 学习
    dubbox 学习
    无能的力量 -- 《看见》
    idea 学习
    小问题?
    《密码学》换字式密码破解。(2)
    《密码学》换字式密码、多表替代密码和转置式密码。(1)
    《密码学》 凯撒密码和栅格密码(0)
    Windows 常用消息及含义
    WM消息大全
  • 原文地址:https://www.cnblogs.com/zhwl/p/2289871.html
Copyright © 2020-2023  润新知