1.效果图
2关键代码
#import "HTDealsViewController.h"
#import "HTDeal.h"
#import "HTDealCell.h"
@interface HTDealsViewController () <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
/** 所有的团购数据 */
@property (nonatomic, strong) NSMutableArray *deals;
/** 即将要删除的团购 */
@property (nonatomic, strong) NSMutableArray *deletedDeals;
@end
@implementation HTDealsViewController
- (NSMutableArray *)deletedDeals
{
if (!_deletedDeals) {
_deletedDeals = [NSMutableArray array];
}
return _deletedDeals;
}
- (NSMutableArray *)deals
{
if (_deals == nil) {
// 加载plist中的字典数组
NSString *path = [[NSBundle mainBundle] pathForResource:@"deals.plist" ofType:nil];
NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
// 字典数组 -> 模型数组
NSMutableArray *dealArray = [NSMutableArray array];
for (NSDictionary *dict in dictArray) {
HTDeal *deal = [HTDeal dealWithDict:dict];
[dealArray addObject:deal];
}
_deals = dealArray;
}
return _deals;
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)remove {
// 删除模型数据
[self.deals removeObjectsInArray:self.deletedDeals];
// 刷新表格
[self.tableView reloadData];
// 清空数组
[self.deletedDeals removeAllObjects];
}
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.deals.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 创建cell
HTDealCell *cell = [HTDealCell cellWithTableView:tableView];
// 取出模型数据
cell.deal = self.deals[indexPath.row];
cell.checkView.hidden = ![self.deletedDeals containsObject:cell.deal];
return cell;
}
#pragma mark - TableView代理方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// 取消选中这一行
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// 取出模型
HTDeal *deal = self.deals[indexPath.row];
if ([self.deletedDeals containsObject:deal]) {
[self.deletedDeals removeObject:deal];
} else {
[self.deletedDeals addObject:deal];
}
// 刷新表格
[tableView reloadData];
}
@end