iOS-UItableViewのパッケージ-使いやすい(ネットワークフレームワークと組み合わせた)
3632 ワード
1つのプロジェクトでは、tableViewが最も多く使用されています.さらに、ほとんどのインタフェースがtableViewなので、多くのプロトコル方法があります.インタフェースごとに1回書くと、気持ちが悪くなり、コードの冗長性が大きくなります.いっそ、カプセル化して、呼び出すのがとても便利で、コードが簡潔で、きれいに見えます.
上図:
UItableViewのパッケージ
1.UItableVIewCellを継承せず、BaseTable View Cellから継承する
2、cellの付与操作
3、コントローラの中
4、データソースをtableViewのデータソースに割り当てる
どこに不適当な地方があって、各位の大神の指摘を歓迎して、ありがとうございます.好きな友达は早くダウンロードしましょう、コード:https://github.com/Baiyongyu/UITableView---.gitいい感じの仲間はstarを覚えていますね.
上図:
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を覚えていますね.