我理解的代理就是我想做一件事,但是这件事在我的管理范围外,那我就拜托能管理操作这件事的人来做。
比如,自定义一个cell,在cell上放一张图片,当我点击图片的时候想把图片放大。放大的图片用其他的viewController来显示,这就要navigationController来push。而我自定义的cell没有navigationController,所以这个cell不能push一个viewController来显示大图。但是,放自定义cell的这个TableView所在的viewController有navigationController,cell就可以拜托这个viewController来push一个viewController来显示大图。
具体来说一下:
![](https://img.haomeiwen.com/i3778729/f1a0ff1e4c9ea0c3.png)
在自定义的cell上添加UIButton ,给其一个点击事件 bigImage:
![](https://img.haomeiwen.com/i3778729/2bf15ad5c8f18d6c.png)
点击事件要的效果是放大一张图片,如上所说,cell完成不了,就拜托TableView来执行。重点来了,怎么拜托呢?流程是啥?
首先,列清单:
![](https://img.haomeiwen.com/i3778729/97f6aa100f33a8b7.png)
RepairsServeCellDeleagte------清单名称
- (void)pushBigImageWithUrl:(NSString *)urlStr;-----------要执行的事
来一个delegate中间接洽
![](https://img.haomeiwen.com/i3778729/232fbff382e9575a.png)
然后拜托TableView,TableView表示收到。
![](https://img.haomeiwen.com/i3778729/59f03f9ec3b2ddd3.png)
在点击事件中,self.delegate执行的 pushBigImageWithUrl:
在TableView中
![](https://img.haomeiwen.com/i3778729/c8b05b800a65c461.png)
这就表示 TableView要执行pushBigImageWithUrl: 这个方法,so,现在就在TableView所在的viewController中实现这个方法。
![](https://img.haomeiwen.com/i3778729/66568d6f6874606a.png)
TableView利用自己所在viewController的navigationController顺利push出一个viewController来显示大图。
![](https://img.haomeiwen.com/i3778729/52c71333d84ffc20.png)
![](https://img.haomeiwen.com/i3778729/31305073d4fc561c.png)
网友评论