zoukankan      html  css  js  c++  java
  • 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

    效果如下:

    仅做记录!

  • 相关阅读:
    WCF 第四章 绑定 在多个绑定上暴露一个服务契约
    WCF 第五章 行为 事务跨操作事务流
    WCF 第五章 导出并发布元数据(服务行为)
    WCF 第五章 行为 通过配置文件暴露一个服务行为
    WCF 第五章 不支持会话的绑定的默认并发和实例
    WCF 第五章 并发和实例(服务行为)
    WCF 第五章 行为 总结
    WCF 第四章 绑定 绑定元素
    WCF 第五章 行为 事务之选择一个事务协议OleTx 或者WSAT
    WCF 第四章 绑定 比较各种绑定的性能和可扩展性
  • 原文地址:https://www.cnblogs.com/hero11223/p/14153711.html
Copyright © 2011-2022 走看看