微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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: (视图已被显示) - 动画和其他视觉元素被加载

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐