iOS-协议传值

原创 2016年08月28日 19:21:18

协议传值和block一样 懂用于反向传值 可以用协议传值的地方都可以用block传值 这样视图不能做到的事情就可以委托控制器去帮他完成

协议传值有6步

委托方有3步

1.在其.h文件中拟定协议方法

2.定义一个委托的属性

3.监听代理是否能够执行协议方法

#import <UIKit/UIKit.h>

@class  MyCollectionViewCell;

@protocol MyCollectionViewCellDegelate <NSObject>

-(void)addImageBtn:(MyCollectionViewCell *)cell;

-(void)cancelImageBtn:(MyCollectionViewCell *)cell;

@end

@interface MyCollectionViewCell : UICollectionViewCell

 @property(nonatomic,strong)UIImage * iimage;

@end


-(void)addImageBtn{

    if ([self.delegate respondsToSelector:@selector(addImageBtn:)]) {

        [self.delegate addImageBtn:self];

    }

    

}


-(void)cancelImageBtn{

    if ([self.delegate respondsToSelector:@selector(cancelImageBtn:)]) {

        [self.delegate cancelImageBtn:self];

    }

}



代理方有3步

1.成为代理

    cell.delegate = self;


2.遵守协议

@interface ViewController ()<UICollectionViewDelegate,UICollectionViewDataSource,MyCollectionViewCellDegelate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>



3实现代理方法

#pragma mark ---自定义cell代理方法

-(void)addImageBtn:(MyCollectionViewCell *)cell{

    

    _selectIndex = [self.collectionView indexPathForCell:cell].item;

    

    UIAlertController * alertVc = [UIAlertController alertControllerWithTitle:@"请选择要打开的设备" message:nil preferredStyle:(UIAlertControllerStyleAlert)];

    UIAlertAction * photo = [UIAlertAction actionWithTitle:@"相册" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {

        //打开相册

        [self openPhoto];

    }];

    [alertVc addAction:photo];

    UIAlertAction * camera = [UIAlertAction actionWithTitle:@"相机" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {

       

        //打开相机

        [self openCamera];

    }];

    [alertVc addAction:camera];

    

    UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];

    [alertVc addAction:cancel];

    [self presentViewController:alertVc animated:YES completion:nil];

}


-(void)cancelImageBtn:(MyCollectionViewCell *)cell{

    [_dataArr removeObject:cell.iimage];

    [self.collectionView reloadData];

}


参照集合视图那个demo
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 协议传值模版

  • 2014年11月06日 14:51
  • 181KB
  • 下载

iOS开发之协议:代理传值

刚开始做iOS开发的时候,对 protocol、delegate 的理解一直都是晕晕乎乎一知半解的状态,不知道两个UIViewController之间怎么进行传值。 面试过几个童鞋,问道怎么用 de...

iOS 开发之协议-代理传值

iOS 开发之协议-代理传值 刚开始做iOS开发的时候,对 protocol、delegate 的理解一直都是晕晕乎乎一知半解的状态,不知道两个UIViewController之间怎...

iOS 开发之协议-代理传值

刚开始做iOS开发的时候,对 protocol、delegate 的理解一直都是晕晕乎乎一知半解的状态,不知道两个UIViewController之间怎么进行传值。 面试过几个童鞋,问道怎么用 ...

IOS页面之间通过委托(协议)传值

传值过程是从一个storyboard创建的默认界面One 跳转到一个用xib创建的页面Two,在页面Two里输入数据,然后返回输入的数据到页面One,页面One如下: 单击注册按钮跳转到页面two ...

[IOS]Protocol协议及委托代理(Delegate)传值-用代码寻找storyboard相应视图

Protocol协议及委托代理(Delegate)传值前言:因为Swift是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供...

iOS 开发之协议-代理传值

刚开始做iOS开发的时候,对 protocol、delegate 的理解一直都是晕晕乎乎一知半解的状态,不知道两个UIViewController之间怎么进行传值。 面试过几个童鞋,问道怎么用 ...

iOS 常用的反向传值协议的使用

1.首先我们要做的就是创建一个协议,在.h文件中创建协议 // 红色部分是协议的名字 @protocol chanageLabelTextDelete NSObject> // 这是协议的方法...

iOS协议传值封装总结

大家好,我是亮亮,这是我总结的协议传值封装的方法。

iOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS-协议传值
举报原因:
原因补充:

(最多只允许输入30个字)