day08 - UITableView-02模型优化

UITableView-01基本使用

  • 直接添加数据,需要多个if,else...的判断,特别的繁琐.
    day08 - UITableView-02模型优化_第1张图片
  • 使用数组+字典来存放数据,拼写错误时,很难发现.
    day08 - UITableView-02模型优化_第2张图片
  • 使用模型来存放数据,无繁琐的判断,没有拼写错误的情况.
    步骤如下:
    1. 将每组数据,都用一个组模型来存放.

      • 组模型里面有个数组, 专门存放产品模型 (也叫模型嵌套)
        day08 - UITableView-02模型优化_第3张图片
    2. 多组数据形成的多个组模型,存放在一个大的数组里.

    @implementation Car
     + (instancetype)carWithIcon:(NSString *)icon name:(NSString *)name{
        Car *car = [[self alloc]init];
        car.icon = icon;
        car.name = name;
        return car;
    }
    @end
    
    @property (nonatomic ,strong) NSArray *carData;
    
    -(NSArray *)carData{
      if(_carData == nil){
        CarGroup *dgGroup = [[CarGroup alloc]init];
        dgGroup.headInfo = @"德国系列";
        dgGroup.endInfo = @"你瞅啥...";
        dgGroup.cars = @[
                          [Car carWithIcon:@"m_2_100"name:@"奔驰"],
                          [Car carWithIcon:@"m_3_100" name:@"宝马"]
                         ];
    ......
        self.carData = @[dgGroup]; //多个组模型存放在一个大的数组里
    }
    return _carData;
    }
    
    1. 获取对应的数据.
     //有多少组,默认为1组
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
      return self.carData.count;
    }
    //每组有多少行数据. (Section -当前组)
    - (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        CarGroup *group = self.carData[section];
        return group.cars.count;
      }
    
    //每行显示的内容
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        UITableViewCell *cellTemp = [[UITableViewCell alloc]init];
        CarGroup * group = self.carData[indexPath.section]; // 获取对应组.
        Car *carTemp = group.cars[indexPath.row]; //当前组里面的对应行
        cellTemp.textLabel.text = carTemp.name;
        cellTemp.imageView.image = [UIImage  imageNamed:carTemp.icon];
        return cellTemp;
    }
    

你可能感兴趣的:(day08 - UITableView-02模型优化)