美文网首页
iOS 多选的实现

iOS 多选的实现

作者: anny_4243 | 来源:发表于2022-08-11 11:36 被阅读0次

tableView的多选

#import "TableViewCell.h"
#import "SelectModel.h"

@interface ViewController ()<UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) NSMutableArray *dataArray; //源数据
@property (nonatomic, strong) NSMutableArray *selectArray; //选中的数据

@end

@implementation  ViewController

- (void)viewDidLoad {
    self.dataArray = [NSMutableArray array];
    self.selectArray = [NSMutableArray array];

    [self.tableView registerNib:[UINib nibWithNibName:@"TableViewCell" bundle:nil] forCellReuseIdentifier:@"TableViewCellID"];
    self.tableView.allowsMultipleSelection = YES;  //让tableView支持多选
    self.tableView.dataSource = self;
    self.tableView.delegate = self;

    [self.tableView reloadData];
}

#pragma mark - UITableViewDataSource

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.dataArray.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCellID"];

    return cell;
}

#pragma mark - UITableViewDelegate

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 100;
}

//选中cell时数据的相关操作
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    SelectModel *model = self.dataArray[indexPath.row];
    [self.selectArray addObject:model.account_id];
}

//取消选中cell时数据的相关操作
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
    SelectModel *model = self.dataArray[indexPath.row];
    [self.selectArray removeObject:model.account_id];
}

@end
@implementation TableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    if(selected){ //cell选中时的样式
        
    }else{ //cell取消选中时的样式

    }
}

@end

collectionView的多选

#import "CollectionViewCell.h"
#import "SelectModel.h"

@interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,UICollectionViewDelegate>

@property (nonatomic, strong) NSMutableArray *dataArray; //源数据
@property (nonatomic, strong) NSMutableArray *selectArray; //选中的数据

@end

@implementation  ViewController

- (void)viewDidLoad {
    self.dataArray = [NSMutableArray array];
    self.selectArray = [NSMutableArray array];

    [self.collectionView registerNib:[UINib nibWithNibName:@"CollectionViewCell" bundle:nil] forCellReuseIdentifier:@"CollectionViewCellID"];

    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
    layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    self.collectionView.collectionViewLayout = layout;

    self.CollectionView.allowsMultipleSelection = YES;  //让CollectionView支持多选
    self.CollectionView.dataSource = self;
    self.CollectionView.delegate = self;

    [self.collectionView reloadData];
}

#pragma mark - UICollectionViewDataSource

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return self.dataArray.count;
}

-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionViewCellID" forIndexPath:indexPath];
    return cell;
}

#pragma matk - UICollectionViewDelegateFlowLayout

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
    return CGSizeMake(100, 100);
}

#pragma mark - UICollectionViewDelegate

//选中cell时数据的相关操作
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    SelectModel *model = self.dataArray[indexPath.row];
    [self.selectArray addObject:model.account_id];
}

//取消选中cell时数据的相关操作
-(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath{
    SelectModel *model = self.dataArray[indexPath.row];
    [self.selectArray removeObject:model.account_id];
}

@end
@implementation CollectionViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    if(selected){ //cell选中时的样式
        
    }else{ //cell取消选中时的样式

    }
}

@end

相关文章

网友评论

      本文标题:iOS 多选的实现

      本文链接:https://www.haomeiwen.com/subject/eoizwrtx.html