标签:
苹果搞了一堆代理啊,target啊之类的模式把我搞得云里雾里。仔细思考一下,所有的控件都是由一个个这样或那样的控件类组成的。首先它们就是类,是一些属性和方法构成的。我们点击按钮,系统接收到我们的点击事件,首先应该执行的是这个按钮的类所固有的方法,如按钮下陷,高亮显示,恢复原样。在执行完这个所有按钮都有的方法后,按钮就需要执行我们自己在控制器中所写的方法了,这是就要从按钮类的方法中“回调”我们在controller中所写的target所指向的方法。
多个按钮是可以设置一个target的,那么怎么区分是哪个按钮点击后触发我们的方法的呢,这时就需要传入一个参数,一个标识按钮自己的参数,所以按钮就把自己给传过来了。
类似的,代理的实现也是如此,一些操作需要开发者给出,一些属性设置需要开发者给定。当我们把这些代理方法实现之后,系统(控件)在需要的时候就会回过头来调用我们给定的方法,例如
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component;
这个代理方法的实现非常典型的显示了系统的回调过程,我们可以根据我们想要改变pickerView的行高,将该pickerView中的第component列中的行高给return 出来。pickerView(系统)在确定行高时,会问其代理实现行高代理了么?ok,实现了,它会调用这个代理方法,拿到返回值,然后呢自己将行高设置成我们给定的值。
点击--按钮---->按钮类做出反应,执行相关方法---执行完后--->执行完后问控制器按钮被点击了是否有和按钮相关的要执行的操作---有--->执行控制其中我们自己写的方法
标签:
原文地址:http://www.cnblogs.com/coldup/p/5366308.html