---------- CZApp.h ----------
#import <Foundation/Foundation.h>
@interface CZApp : NSObject
@property (copy, nonatomic) NSString *icon;
@property (copy, nonatomic) NSString *name;
@property (copy, nonatomic) NSString *size;
@property (copy, nonatomic) NSString *download;
@property (assign, nonatomic, getter = isDownloaded) BOOL downloaded;
+ (instancetype)appWithDict:(NSDictionary *)dict;
- (instancetype)initWithDict:(NSDictionary *)dict;
@end
---------- CZApp.m ----------
#import "CZApp.h"
@implementation CZApp
+ (instancetype)appWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
}
- (instancetype)initWithDict:(NSDictionary *)dict
{
if (self = [super init])
{
[selfsetValuesForKeysWithDictionary:dict];
}
returnself;
}
@end
---------- CZAppCell.h ----------
#import <UIKit/UIKit.h>
@classCZApp, CZAppCell;
@protocol CZAppCellDelegate <NSObject>
@optional
- (void)appCellDidClickedDownloadBtn:(CZAppCell *)cell;
@end
@interface CZAppCell : UITableViewCell
@property (strong, nonatomic) CZApp *app;
@property (weak, nonatomic) id <CZAppCellDelegate> delegate;
@end
---------- CZAppCell.m ----------
#import "CZAppCell.h"
#import "CZApp.h"
@interfaceCZAppCell()
@property (weak, nonatomic) IBOutletUIImageView *iconView;
@property (weak, nonatomic) IBOutletUILabel *nameView;
@property (weak, nonatomic) IBOutletUIButton *downloadView;
@property (weak, nonatomic) IBOutletUILabel *introView;
- (IBAction)downloadClick;
@end
@implementation CZAppCell
- (void)setApp:(CZApp *)app
{
_app = app;
self.iconView.image = [UIImage imageNamed:app.icon];
self.nameView.text = app.name;
self.introView.text = [NSString stringWithFormat:@"大小:%@ | 下载量:%@", app.size, app.download];
self.downloadView.enabled = !app.isDownloaded;
}
- (IBAction)downloadClick
{
self.downloadView.enabled = NO;
self.app.downloaded = YES;
if ([self.delegate respondsToSelector:@selector(appCellDidClickedDownloadBtn:)])
{
[self.delegateappCellDidClickedDownloadBtn:self];
}
}
@end