iOS-UItableViewのパッケージ-使いやすい(ネットワークフレームワークと組み合わせた)

3632 ワード

1つのプロジェクトでは、tableViewが最も多く使用されています.さらに、ほとんどのインタフェースがtableViewなので、多くのプロトコル方法があります.インタフェースごとに1回書くと、気持ちが悪くなり、コードの冗長性が大きくなります.いっそ、カプセル化して、呼び出すのがとても便利で、コードが簡潔で、きれいに見えます.
上図:
UItableViewのパッケージ
1.UItableVIewCellを継承せず、BaseTable View Cellから継承する
@interface ShopCell : BaseTableViewCell
@property(nonatomic,strong)GoodsModel *goodsData;
@property(nonatomic,weak)iddelegate;
@end

2、cellの付与操作
- (void)setCellData:(id)item atIndexPath:(NSIndexPath *)indexPath {
    GoodsModel *goodsData = (GoodsModel *)item;
    、、、
}

3、コントローラの中
1>    tableView,   :BaseTableView
@property(nonatomic,strong)BaseTableView *shopTableView;

2>   tableView,       
- (BaseTableView *)shopTableView {
    if (!_shopTableView) {
        _shopTableView = [[BaseTableView alloc] init];
        //    cell
        _shopTableView.tableViewCellClass = [ShopCell class];
        _shopTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _shopTableView.clearSeperatorInset = YES;
        _shopTableView.isHeightCache = YES;
        _shopTableView.showsVerticalScrollIndicator = NO;
        WS(weakSelf);
        //      cell    
        _shopTableView.cellConfigureBlock = ^(UITableViewCell *cell, id item, NSIndexPath *indexPath) {
            ((ShopCell *)cell).delegate = weakSelf;
        };
        //   cell    (didSelectRowAtIndexPath)
        _shopTableView.cellSelectBlock = ^ (UITableView *tableView, NSIndexPath *indexPath) {
        // GoodsDetailViewController *detailVC = [[GoodsDetailViewController alloc] init];
        // detailVC.goodsData = weakSelf.shopTableView.dataArray[indexPath.row];
        //  [AppCommon pushViewController:detailVC animated:YES];
        };
        
        //    (     ,  return       )
        _shopTableView.editActionsForRowAtIndexPath = ^ (UITableView *tableView, NSIndexPath *indexPath) {
            UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:(UITableViewRowActionStyleDestructive) title:@"  " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
          // AlertViewController :      :http://www.jianshu.com/p/418fe079d356
          // ComAlertView *alertView = [[ComAlertView alloc]initWithTitle:@"    " message:@"        ?          ~" sureBtn:@"  " cancleBtn:@"  "];
          //  alertView.resultIndex = ^(NSInteger index){
                // weakSelf.currentIndexPath = indexPath;
                // [weakSelf.deleteCartRequest loadDataWithHUDOnView:nil];  
          //  };
          //   [alertView showAlertView];
            }];
            deleteAction.backgroundColor = [UIColor redColor];
            return @[deleteAction];
        };
    }
    return _shopTableView;
}

4、データソースをtableViewのデータソースに割り当てる
#pragma mark -  demo,      ,           ,    [tableView reload]  。
- (void)loadData {
    GoodsModel *goodsData = [[GoodsModel alloc] init];
    goodsData.name = @" Title";
    goodsData.img_url = @"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490339743727&di=921466b975276b5abc5752d8ca088529&imgtype=0&src=http%3A%2F%2Ff.hiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2F80cb39dbb6fd526695cb9cc4a918972bd5073679.jpg";
    self.shopTableView.dataArray = [@[goodsData,goodsData,goodsData,goodsData,goodsData,goodsData] mutableCopy];
}

どこに不適当な地方があって、各位の大神の指摘を歓迎して、ありがとうございます.好きな友达は早くダウンロードしましょう、コード:https://github.com/Baiyongyu/UITableView---.gitいい感じの仲間はstarを覚えていますね.