做侧滑的时候发现一个问题,当一个UITableView的cell有的有侧滑,有的没有,当用editActionsForRowAtIndexPath方法的时候发现有点问题,查看了下api,需要用到canEditRowAtIndexPath这个方法
#import "SkidSidewaysViewController.h" @interface SkidSidewaysViewController ()<UITableViewDelegate,UITableViewDataSource> @property(nonatomic,strong)NSMutableArray *dataArr; @property(nonatomic,strong)UITableView *tableView; @end @implementation SkidSidewaysViewController #define Identifier @"cell" -(NSMutableArray *)dataArr{ if(!_dataArr){ _dataArr = [NSMutableArray array]; for(int i=0;i<20;i++){ [_dataArr addObject:[NSString stringWithFormat:@"%d",arc4random()%3]]; } } return _dataArr; } - (void)viewDidLoad { [super viewDidLoad]; self.tableView = [[UITableView alloc]initWithFrame:self.view.bounds]; [self.view addSubview:self.tableView]; self.tableView.delegate = self; self.tableView.dataSource = self; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:Identifier]; } #pragma mark UITableViewDelegate,UITableViewDataSource -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return self.dataArr.count; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier forIndexPath:indexPath]; cell.textLabel.text = self.dataArr[indexPath.row]; return cell; } //判断是否有侧滑 -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ if([self.dataArr[indexPath.row] isEqualToString:@"0"]){ return NO; } return YES; } //判断侧滑按钮一共有几个 - (nullable NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{ NSMutableArray *acitonArr = [NSMutableArray array]; for(int i=0;i<[self.dataArr[indexPath.row] intValue];i++){ UITableViewRowAction *action = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:[NSString stringWithFormat:@"%d",i] handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { }]; action.backgroundColor = [UIColor redColor]; [acitonArr addObject:action]; } return acitonArr; } @end