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

原文地址:https://www.cnblogs.com/lsh1234/p/5779632.html