cell选中后进入重用池出来选中状态消失
#import "XXViewController.h"
@interface XXViewController ()<UITableViewDelegate,UITableViewDataSource>
{
UITableView *_table;
}
//定义一个数组来记录cell的是否选中的状态
@property (nonatomic, strong) NSMutableArray *arrCellSelect;
//cell的个数的数组
@property (nonatomic, strong) NSArray *arrCellCount;
@end
@implementation XXViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)creatTable{
_table = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style:(UITableViewStylePlain)];
[self.view addSubview:_table];
_table.delegate = self;
_table.dataSource = self;
}
//网络请求
- (void)dataHadel{
//此处获取cell的个数数组
self.arrCellCount = [NSArray array];
self.arrCellCount = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];
//遍历cell的个数,添加cell对应的选中状态
for (int i =0 ; i< self.arrCellCount.count; i++) {
[_arrCellSelect addObject:@(NO)];//一开始cell为不选中
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.arrCellCount.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:@"cell"];
}
if ([[self.arrCellSelect objectAtIndex:indexPath.row] isEqual:@(NO)]) {
cell.detailTextLabel.text = @"我落选了";
}
else{
cell.detailTextLabel.text = @"我入选了";
}
cell.textLabel.text = self.arrCellCount[indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [_table cellForRowAtIndexPath:indexPath];
NSIndexPath *indPath = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section];
if ([[_arrCellSelect objectAtIndex:indexPath.row] isEqual:@(NO)]) {
[_arrCellSelect replaceObjectAtIndex:indexPath.row withObject:@(YES)];
cell.detailTextLabel.text =@"我入选了";
}
else{
[_arrCellSelect replaceObjectAtIndex:indexPath.row withObject:@(NO)];
cell.detailTextLabel.text = @"我落选了";
}
[_table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indPath] withRowAnimation:(UITableViewRowAnimationNone)];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end