iOS 两级数据联动(UITableView)

两级数据联动,左边为一级数据,右边为二级数据:


ClassifyView.h文件


#import <UIKit/UIKit.h>


@interface ClassifyView : UIView


@property (nonatomic, strong) NSArray *clDataArray;



@end




ClassifyView.m文件


#import "ClassifyView.h"

#import "Header.h"

#import "ClassifyCell.h"


@interface ClassifyView ()<UITableViewDelegate,UITableViewDataSource>


@property (nonatomic, strong) UITableView *leftTableView;

@property (nonatomic, strong) NSMutableArray *leftDataArray;

@property (nonatomic, strong) UITableView *rightTableView;

@property (nonatomic, strong) NSMutableArray *rightDataArray;


@property (nonatomic, strong) GoodModel *selectModel;


@end


@implementation ClassifyView


- (instancetype)initWithFrame:(CGRect)frame{


    self = [super initWithFrame:frame];

    if (self) {

        

        self.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];

        

        self.selectModel = [[GoodModel alloc] init];

        self.leftDataArray = [NSMutableArray array];

        self.rightDataArray = [NSMutableArray array];

        [self addSubview:self.leftTableView];

        [self addSubview:self.rightTableView];

    }

    

    return self;

}


#pragma mark - 添加数据

- (void)setClDataArray:(NSMutableArray *)clDataArray{


    self.selectModel = [[GoodModel alloc] init];

    _clDataArray = clDataArray;

    

    [self selectLeftArray];

    

    [self.leftTableView reloadData];

}


#pragma mark - 选出左边的数据

- (void)selectLeftArray{


    self.leftDataArray = [NSMutableArray array];

    self.rightDataArray = [NSMutableArray array];

    for (NSInteger i = 0; i < self.clDataArray.count; i++) {

        

        GoodModel *newModel = self.clDataArray[i];

        if (self.leftDataArray.count > 0) {

            

            GoodModel *oldModel = self.leftDataArray[self.leftDataArray.count-1];

            if (![newModel.classify isEqualToString:oldModel.classify]) {

                

                [self.leftDataArray addObject:newModel];

            }

        }else{

            

            [self.leftDataArray addObject:newModel];

        }

        

    }

    

    if (self.clDataArray.count > 0 && self.leftDataArray.count > 0 ) {

        

        [self selectRightArray];

    }

}


#pragma mark - 选出右边的数据

- (void)selectRightArray{


    for (NSInteger i = 0; i < self.leftDataArray.count; i++) {

        

        GoodModel *leftModel = self.leftDataArray[i];

        

        NSMutableArray *rightS = [NSMutableArray array];

        for (NSInteger i = 0; i < self.clDataArray.count; i++) {

            

            GoodModel *model = self.clDataArray[i];

            

            if ([leftModel.classify isEqualToString:model.classify]) {

                

                [rightS addObject:model];

            }

            

        }

        

        leftModel.subArray = [NSArray arrayWithArray:rightS];

    }

}


#pragma mark - tableView 的代理方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    

    NSInteger num = 0;

    if (tableView == self.leftTableView) {

        

        num = self.leftDataArray.count;

    }else{

    

        num = self.rightDataArray.count;

    }

    return num;

}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    

    return 40;

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    

    ClassifyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ClassifyCell"];

    if (cell == nil) {

        

        cell = [[ClassifyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ClassifyCell"];

    }

    

    if (tableView == self.leftTableView) {

        

        cell.leftModel = self.leftDataArray[indexPath.row];

    }else{

    

        cell.rightModel = self.rightDataArray[indexPath.row];

    }

    

    

    return cell;

}


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

    

    return 0.01;

}


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{

    

    return 0.01;

}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{


    if (tableView == self.leftTableView) {

        

        self.selectModel = self.leftDataArray[indexPath.row];

        

        self.rightDataArray = [NSMutableArray arrayWithArray:self.selectModel.subArray];

        [self.rightTableView reloadData];

        

    }else{

    

        self.selectModel = self.rightDataArray[indexPath.row];

    }

}


- (UITableView *)leftTableView{

    

    if (_leftTableView == nil) {

        

        _leftTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, WIDTH/2, HEIGHT-64-49)style:UITableViewStyleGrouped];

        _leftTableView.backgroundColor = [UIColor clearColor];

        _leftTableView.delegate = self;

        _leftTableView.dataSource = self;

        _leftTableView.showsVerticalScrollIndicator = NO;

        

    }

    

    return _leftTableView;

}


- (UITableView *)rightTableView{

    

    if (_rightTableView == nil) {

        

        _rightTableView = [[UITableView alloc] initWithFrame:CGRectMake(WIDTH/2, 64, WIDTH/2, HEIGHT-64-49)style:UITableViewStyleGrouped];

        _rightTableView.backgroundColor = [UIColor clearColor];

        _rightTableView.delegate = self;

        _rightTableView.dataSource = self;

        _rightTableView.showsVerticalScrollIndicator = NO;

        

    }

    

    return _rightTableView;

}



#import <UIKit/UIKit.h>

#import "GoodModel.h"


@interface ClassifyCell : UITableViewCell


@property (nonatomic, strong) UILabel *titleLabel;


@property (nonatomic, strong) GoodModel *leftModel;

@property (nonatomic, strong) GoodModel *rightModel;


@end



#import "ClassifyCell.h"

#import "Header.h"


@implementation ClassifyCell

@synthesize titleLabel;


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

        

        self.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1];

        self.accessoryType = UITableViewCellAccessoryNone;

        

        [self createUI];

    }

    return self;

}


- (void)createUI{

    

    titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, WIDTH/2-10, 40)];

    titleLabel.textColor = selectColor;

    titleLabel.font = [UIFont systemFontOfSize:15.0f];

    [self.contentView addSubview:titleLabel];

    

}


- (void)setLeftModel:(GoodModel *)leftModel{


    _leftModel = leftModel;

    

    titleLabel.text = [NSString stringWithFormat:@"%@",leftModel.classify];

    

    self.backgroundColor = [UIColor whiteColor];

    

}


- (void)setRightModel:(GoodModel *)rightModel{


    _rightModel = rightModel;

    

    titleLabel.text = [NSString stringWithFormat:@"%@",rightModel.subClassify];

    

    self.backgroundColor = [UIColor colorWithWhite:0.90 alpha:1];

}



ClassifyCell.m文件

#import "ClassifyCell.h"

#import "Header.h"


@implementation ClassifyCell

@synthesize titleLabel;


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

        

        self.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1];

        self.accessoryType = UITableViewCellAccessoryNone;

        

        [self createUI];

    }

    return self;

}


- (void)createUI{

    

    titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, WIDTH/2-10, 40)];

    titleLabel.textColor = selectColor;

    titleLabel.font = [UIFont systemFontOfSize:15.0f];

    [self.contentView addSubview:titleLabel];

    

}


- (void)setLeftModel:(GoodModel *)leftModel{


    _leftModel = leftModel;

    

    titleLabel.text = [NSString stringWithFormat:@"%@",leftModel.classify];

    

    self.backgroundColor = [UIColor whiteColor];

    

}


- (void)setRightModel:(GoodModel *)rightModel{


    _rightModel = rightModel;

    

    titleLabel.text = [NSString stringWithFormat:@"%@",rightModel.subClassify];

    

    self.backgroundColor = [UIColor colorWithWhite:0.90 alpha:1];

}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/wwc455634698/article/details/53835256
所属专栏: iOS开发
上一篇iOS 自定义加密解密——解密
下一篇iOS 自定义UICollectionViewCell
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭