//
// ViewController.m
// 17-团购案例
//
// Created by 鲁军 on 2021/2/4.
//
#import "ViewController.h"
#import "CZGoods.h"
#import "CZGoodsCell.h"
#import "CZFooterView.h"
#import "CZHeaderView.h"
@interface ViewController ()<UITableViewDataSource,CZFooterViewDelegate>
@property(nonatomic,strong)NSMutableArray *goods;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
@implementation ViewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CZGoods *model = self.goods[indexPath.row];
// static NSString *ID= @"goods_cell";
//
// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// if(cell==nil){
//
// cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
//
// }
// cell.imageView.image = [UIImage imageNamed:model.icon];
// cell.textLabel.text = model.title
// ;
// cell.detailTextLabel.text = [NSString stringWithFormat:@"¥ %@ %@人已购买",model.price,model.buyCount];
CZGoodsCell *cell = [CZGoodsCell goodsCellWithTableView:tableView];
cell.goods = model;
return cell;
}
- (BOOL)prefersStatusBarHidden{
return YES;
}
//- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
// return 1;
//}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.goods.count;
}
- (NSMutableArray *)goods{
if(_goods==nil){
NSString *path = [[NSBundle mainBundle] pathForResource:@"tgs.plist" ofType:nil];
NSArray *arrayDict = [NSArray arrayWithContentsOfFile:path];
NSMutableArray *attayModles = [NSMutableArray array];
for(NSDictionary *dict in arrayDict){
CZGoods *model = [CZGoods goodsWithDict:dict];
[attayModles addObject:model];
}
_goods = attayModles;
}
return _goods;
}
#pragma 代理方法
- (void)footerViewUpdateData:(CZFooterView *)footerView{
CZGoods *model=[[CZGoods alloc] init];
model.title = @"驴肉火烧";
model.price=@"6.0";
model.buyCount = @"1234";
model.icon = @"d40878ee9d97a53bd4b8778daa11d38d.png";
[self.goods addObject:model];
[self.tableView reloadData];
//加载完毕向上滚动一下;
NSIndexPath *idxPath = [NSIndexPath indexPathForRow:self.goods.count-1 inSection:0];
[self.tableView scrollToRowAtIndexPath:idxPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.tableView.rowHeight = 60;
// UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];
// btn.backgroundColor=[UIColor yellowColor];
//
// btn.frame = CGRectMake(20, 50, 30, 100);
//
//
// self.tableView.tableFooterView=btn;
// CZFooterView *footerView = [[[NSBundle mainBundle] loadNibNamed:@"CZFooterView" owner:nil options:nil] lastObject];
//
CZFooterView *footerView = [CZFooterView footerView];
footerView.delegate = self;
self.tableView.tableFooterView = footerView;
// CZHeaderView *headerView = [[[NSBundle mainBundle] loadNibNamed:@"CZHeaderView" owner:nil options:nil] firstObject];
//
CZHeaderView *headerView = [CZHeaderView headerView];
self.tableView.tableHeaderView=headerView;
}
@end
//
// CZGoods.h
// 17-团购案例
//
// Created by 鲁军 on 2021/2/4.
//
#import
NS_ASSUME_NONNULL_BEGIN
@interface CZGoods : NSObject
@property(nonatomic,copy)NSString *buyCount;
@property(nonatomic,copy)NSString *price;
@property(nonatomic,copy)NSString *title;
@property(nonatomic,copy)NSString *icon;
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)goodsWithDict:(NSDictionary *)dict;
@end
NS_ASSUME_NONNULL_END
//
// CZGoods.m
// 17-团购案例
//
// Created by 鲁军 on 2021/2/4.
//
#import "CZGoods.h"
@implementation CZGoods
-(instancetype)initWithDict:(NSDictionary *)dict{
if(self=[super init]){
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
+(instancetype)goodsWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}
@end
//
// CZGoodsCell.h
// 17-团购案例
//
// Created by 鲁军 on 2021/2/4.
//
#import
NS_ASSUME_NONNULL_BEGIN
@class CZGoods;
@interface CZGoodsCell : UITableViewCell
@property(nonatomic,strong)CZGoods *goods;
+(instancetype)goodsCellWithTableView:(UITableView *)tableView;
@end
NS_ASSUME_NONNULL_END
//
// CZGoodsCell.m
// 17-团购案例
//
// Created by 鲁军 on 2021/2/4.
//
#import "CZGoodsCell.h"
#import "CZGoods.h"
//类扩展
@interface CZGoodsCell()
@property (weak, nonatomic) IBOutlet UIImageView *imgViewIcon;
@property (weak, nonatomic) IBOutlet UILabel *lblTitle;
@property (weak, nonatomic) IBOutlet UILabel *lblPrice;
@property (weak, nonatomic) IBOutlet UILabel *lblBuyCount;
@end
@implementation CZGoodsCell
+ (instancetype)goodsCellWithTableView:(UITableView *)tableView{
static NSString *ID= @"goods_cell";
CZGoodsCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if(cell==nil){
cell=[[[NSBundle mainBundle] loadNibNamed:@"CZGoodsCell" owner:nil options:nil] firstObject];
}
return cell;
}
- (void)setGoods:(CZGoods *)goods{
_goods = goods;
self.imgViewIcon.image =[UIImage imageNamed:goods.icon];
self.lblTitle.text=goods.title;
self.lblPrice.text=[NSString stringWithFormat:@"¥ %@",goods.price];
self.lblBuyCount.text=[NSString stringWithFormat:@"%@ 人已购买",goods.buyCount];
}
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
//
// CZFooterView.h
// 17-团购案例
//
// Created by 鲁军 on 2021/2/6.
//
#import
NS_ASSUME_NONNULL_BEGIN
@class CZFooterView;
@protocol CZFooterViewDelegate <NSObject>
@required
-(void)footerViewUpdateData:(CZFooterView *)footerView;
@end
@interface CZFooterView : UIView
@property(nonatomic,weak)id<CZFooterViewDelegate> delegate;
+(instancetype)footerView;
@end
NS_ASSUME_NONNULL_END
//
// CZFooterView.m
// 17-团购案例
//
// Created by 鲁军 on 2021/2/6.
//
#import "CZFooterView.h"
@interface CZFooterView()
@property (weak, nonatomic) IBOutlet UIButton *btnLoadMore;
@property (weak, nonatomic) IBOutlet CZFooterView *watingView;
- (IBAction)btnLoadMoreClick;
@end
@implementation CZFooterView
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
- (IBAction)btnLoadMoreClick {
self.btnLoadMore.hidden = YES;
self.watingView.hidden = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if([self.delegate respondsToSelector:@selector(footerViewUpdateData:)]){
[self.delegate footerViewUpdateData:self];
}
self.btnLoadMore.hidden = NO;
self.watingView.hidden = YES;
});
}
+(instancetype)footerView{
CZFooterView *footerView = [[[NSBundle mainBundle] loadNibNamed:@"CZFooterView" owner:nil options:nil] lastObject];
return footerView;
}
@end
//
// CZHeaderView.h
// 17-团购案例
//
// Created by 鲁军 on 2021/2/6.
//
#import
NS_ASSUME_NONNULL_BEGIN
@interface CZHeaderView : UIView
+(instancetype)headerView;
@end
NS_ASSUME_NONNULL_END
//
// CZHeaderView.m
// 17-团购案例
//
// Created by 鲁军 on 2021/2/6.
//
#import "CZHeaderView.h"
@interface CZHeaderView ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@end
@implementation CZHeaderView
- (void)awakeFromNib{
//书写 scroolView 的大小跟内容区域的大小一样大
}
+(instancetype)headerView{
CZHeaderView *headerView = [[[NSBundle mainBundle] loadNibNamed:@"CZHeaderView" owner:nil options:nil] firstObject];
return headerView;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
@end
需要源码的朋友请私聊我VX: Johnson_Swift