• viewController 瘦身 -- 通过新建DataSource类来管理tableView的数据源方法


    大致思路: 新建一个DataSource类,把tableView 的数据源代理交给这个类。

    核心代码:

    ViewController中:

    - (void)setupTableView {
        
      // 创建回调,用于在数据源方法中,对cell进行处理 TableViewCellConfigureBlock configureBlock = ^(TestCell *cell, model *item) { [cell configureWithModel:item]; };
      // 创建dataSource类,同时把需要用到的数据,cellId, 回调传进去 self.dataSource = [[ArrayDataSource alloc] initWithItems:self.modelArr cellIdentifier:CellId configureCellBlock:configureBlock];
      // 设置数据源代理 self.mainTable.dataSource = self.dataSource; }

     新建的ArrayDataSource类:

    - (instancetype)initWithItems:(NSArray *)anItems cellIdentifier:(NSString *)aCellIdentifier configureCellBlock:(TableViewCellConfigureBlock)aConfigureBlock {
    
        if (self = [super init]) {
         
            self.itmes = anItems;
            self.cellIdentifier = aCellIdentifier;
            self.configureBlock = aConfigureBlock;
        }
        return self;
    }
    
    // 数据源代理 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.itmes.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifier]; id item = self.itmes[indexPath.row]; self.configureBlock(cell, item); return cell; }

    Cell 处理方法
    - (void)configureWithModel:(model *)m {
    
        self.titleLabel.text = m.title;
        self.descLabel.text = m.desc;
    }
    

     Github 上的实例项目

  • 相关阅读:
    Shell 编程基础之 Until 练习
    Shell 编程基础之 While 练习
    Shell 编程基础之 For 练习
    Shell 编程基础之 If 练习
    Kafka 0.8 Controller设计机制和状态变化
    5 Kafka 应用问题经验积累
    3 Kafka两个版本在Zookeeper的元数据存储
    Broker流量均衡 prefer reassign
    Kafka 0.8 Consumer Rebalance
    2 Kafka Broker
  • 原文地址:https://www.cnblogs.com/yangzhifan/p/5383766.html
Copyright © 2020-2023  润新知