• iOS开发之--简单的二级联动页面


    1、文件目录

     2、默认选中第0个,然后左侧菜单栏点击切换分类,右侧刷新数据,很简单,这里做个记录

    默认选中代码:

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
        [super setSelected:selected animated:animated];
        self.leftView.hidden = selected == YES ? NO:YES;
        self.lab.textColor = selected == YES ? UIColor.whiteColor:UIColor.lightGrayColor;
        self.lab.backgroundColor = selected == YES ? UIColor.blackColor : UIColor.whiteColor;
        
        // Configure the view for the selected state
    }

    3、思路狠简单,解析数据,转数据模型,然后传递相应model即可,具体代码如下:

    #define Window_Bounds   [UIScreen mainScreen].bounds
    #define Window_H        [[UIScreen mainScreen] bounds].size.height
    #define Window_W        [[UIScreen mainScreen] bounds].size.width
    
    #import "ViewController.h"
    #import "leftCell.h"
    #import "rightCell.h"
    #import "Model.h"
    #import "MJExtension.h"
    #import "NSString+MJExtension.h"
    #import "NSObject+MJClass.h"
    #import "subModel.h"
    
    @interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
    {
        UITableView *_leftTableV;
        UITableView *_rightTableV;
        NSIndexPath *_selIndexPath;
        rightCell *cell;
    }
    
    @property (nonatomic, strong) NSMutableArray *dataAry,*subcategories;
    
    @end
    
    @implementation ViewController
    
    #pragma mark -- 懒加载数据源
    - (NSMutableArray *)dataAry
    {
      if (!_dataAry) {
          _dataAry = [NSMutableArray array];
          //获取文件路径
          NSString *filePath = [[NSBundle mainBundle] pathForResource:@"text" ofType:@"json"];
          //获取文件内容
          NSString *jsonStr  = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
          //将文件内容转成数据
          NSData *jaonData   = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
          //将数据转成数组
          NSDictionary *dataDcit = [NSJSONSerialization JSONObjectWithData:jaonData options:NSJSONReadingMutableContainers error:nil];
          NSMutableArray *cateAry = [NSMutableArray arrayWithArray:dataDcit[@"data"][@"categories"]];
          NSLog(@"cateAry is %@",cateAry);
          for (NSDictionary *dict in cateAry) {
              Model *model = [Model mj_objectWithKeyValues:dict];
              [_dataAry addObject:model];
          }
      }
      return _dataAry;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        
        _leftTableV = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 100, Window_H) style:UITableViewStylePlain];
        _leftTableV.delegate = self;
        _leftTableV.dataSource = self;
        _leftTableV.tableFooterView = [UIView new];
        [self.view addSubview:_leftTableV];
        
        [_leftTableV selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
    
        
        _rightTableV = [[UITableView alloc]initWithFrame:CGRectMake(100, 0, Window_W-100, Window_H) style:UITableViewStylePlain];
        _rightTableV.delegate = self;
        _rightTableV.dataSource = self;
        _rightTableV.tableFooterView = [UIView new];
        [self.view addSubview:_rightTableV];
    
    }
    
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        if (tableView == _leftTableV) {
            return self.dataAry.count;
        }
        
        return self.subcategories.count;
    }
    
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 50.0f;
    }
    
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (tableView == _leftTableV) {
            static NSString *left_cellIdentifier = @"leftCell";
            leftCell *cell = [_leftTableV dequeueReusableCellWithIdentifier:left_cellIdentifier];
            if (!cell) {
                cell = [[leftCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:left_cellIdentifier];
                cell.lab.text = [NSString stringWithFormat:@"%@",_dataAry[indexPath.row]];
                cell.selectionStyle = UITableViewCellSelectionStyleNone;
            }
                    
            cell.model = self.dataAry[indexPath.row];
            
            return cell;
        }else{
            static NSString *right_cellIdentifier = @"rightCell";
            cell = [_rightTableV dequeueReusableCellWithIdentifier:right_cellIdentifier];
            if (!cell) {
                cell = [[rightCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:right_cellIdentifier];
            }
            
            cell.subModel = self.subcategories[indexPath.row];
                    
            return cell;
        }
    }
    
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        if (tableView == _leftTableV) {
            
            [self.subcategories removeAllObjects];
            
            //当前选中的索引
            _selIndexPath = indexPath;
            
            [self setSubData];
            
            [_rightTableV reloadData];
        }
    }
    
    
    -(NSMutableArray *)subcategories{
        if (!_subcategories) {
            //默认选中展示数据
            _subcategories = [NSMutableArray array];
            [self setSubData];
        }
        return  _subcategories;
    }
    
    -(void)setSubData{
        Model *model = [[Model alloc]init];
        model = self.dataAry[_selIndexPath.row];
        NSMutableArray *subAry = [NSMutableArray arrayWithArray:model.subcategories];
        for (NSDictionary *dict in subAry) {
            subModel *model = [subModel mj_objectWithKeyValues:dict];
            [_subcategories addObject:model];
        }
    }
    
    @end

    效果如下:

    仅做记录!

  • 相关阅读:
    window.location.href 失效的解决办法
    jquery.pagination.js分页
    64位WIN7+oracle11g+plsql安装
    uiZjs入门
    dateTimePicker的使用,时间控件
    jquery+ajax(用ajax.dll)实现无刷新分页
    用Jquery获取select的value和text值
    Asp.net上传文件Request.files获取不到文件
    手动导出Excel方法
    编写高质量代码改善C#程序的157个建议——建议121:为应用程序设定运行权限
  • 原文地址:https://www.cnblogs.com/hero11223/p/14153711.html
Copyright © 2020-2023  润新知