美文网首页
tableView多选cell选中样式(有的是多选样式,有的是正

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

作者: mkb2 | 来源:发表于2016-12-24 11:34 被阅读414次

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

    • 1.将红框设置为tableview.tableheaderview
    • 2.全用cell
    公司要这样的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;一定要写?

    就会显示不正确,和没有设置一样的效果

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

    相关文章

      网友评论

          本文标题:tableView多选cell选中样式(有的是多选样式,有的是正

          本文链接:https://www.haomeiwen.com/subject/jjmlvttx.html