tableView多选cell选中样式(有的是多选样式,有的是正常样式)

在实际的过程中,我们或多或少能遇到这样的图,就是上边红框固定,但是底下的要显示可选状态,这个一共有两种方法

  • 1.将红框设置为tableview.tableheaderview
  • 2.全用cell
tableView多选cell选中样式(有的是多选样式,有的是正常样式)_第1张图片
公司要这样的UI效果

我是比较推荐使用第二种方法,第一种或多或少有的不明智,现在聊聊如何通过第二中方法制作的

*1.设置self.tableView.editing = YES;(一定要有这一步,否则无效)

*2.设置好要去现实的cell样子


//设置数据源,以及返回cell的样子
- (void)setupTableViewFirstSec{
    
    SEUsePlatAddFriendModel * friendsNewM = [[SEUsePlatAddFriendModel alloc] init];
    friendsNewM.imgstr = @"contact_cell_newfriends";
    friendsNewM.appName = @"搜索";
    
    SEUsePlatAddFriendModel * mygroupM = [[SEUsePlatAddFriendModel alloc] init];
    mygroupM.imgstr = @"contact_cell_mygroup";
    mygroupM.appName = @"已加入的群组";
    
    self.firstSecArr = @[friendsNewM,mygroupM];
    
    [self.beGroupedFriends addObject:self.firstSecArr];
    
}

#pragma mark - 内部方法
- (void)jumpToSearchVC:(UIGestureRecognizer *)tap{
    SEEntireSearchController *searchVC = [[SEEntireSearchController alloc] initWithIsInTwitter:NO];
    [self.navigationController pushViewController:searchVC animated:YES];
}
#pragma mark - 数据源方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    SEPhoneLinkManCell *cell = [SEPhoneLinkManCell phoneLinkManCellWithTableView:tableView];
    NSArray *t = self.beGroupedFriends[indexPath.section];
    if (indexPath.section==0) {
        if (indexPath.row == 0) {
            UITableViewCell *sCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                                                            reuseIdentifier:nil];
            SESearchView *sV = [[SESearchView alloc] init];
            [sCell.contentView addSubview:sV];
            sV.frame = CGRectMake(0, 0, ScreenWidth, kSEPhoneLinkManCellHeightIInMyContacts);
            [sV addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self
                                                                             action:@selector(jumpToSearchVC:)]];
            cell = sCell;
        }else{
            cell.assModel = t[indexPath.row];
            cell.tintColor = [AppConfig colorForEa5757];
        }
    }else{
        cell.profile = t[indexPath.row];
        cell.tintColor = [AppConfig colorForEa5757];
    }
    return cell;
}

*3.通过代理方法确定那个可以滑动,那个不可以滑动

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.section == 0) {
        return NO;
    }else{
        return YES;
    }
}

*4.确定如果可以滑动,他要显示的样式

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0) {
        return UITableViewCellEditingStyleNone;
    }else{
        return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
    }
}

说在后边
为啥self.tableView.editing = YES;一定要写?

tableView多选cell选中样式(有的是多选样式,有的是正常样式)_第2张图片
就会显示不正确,和没有设置一样的效果

有其他操作,或者替换图片的需求,可以看看这个文章。iOS自定义tableView多选cell选中样式

你可能感兴趣的:(tableView多选cell选中样式(有的是多选样式,有的是正常样式))