首页 > 学院 > 开发设计 > 正文

[原]列表的二级展开功能。在原生UITableView上扩展实现。

2019-11-14 19:32:27
字体:
来源:转载
供稿:网友

  还是直接贴代码了。

第一步:

@interface TodoViewController (){    //声明一个数组 存放cell的信息    NSMutableArray *grouparr;}@end

 

第二步:

//将cell的状态存入数组中-(void)initDataSource{    NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"TodoCell",@"cell",@"NO",@"state",nil];    NSMutableDictionary *nameAndStateDic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"TodoCell",@"cell",@"NO",@"state",nil];    NSMutableDictionary *nameAndStateDic3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"TodoCell",@"cell",@"NO",@"state",nil];    NSMutableDictionary *nameAndStateDic4 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"TodoCell",@"cell",@"NO",@"state",nil];    grouparr = [[NSMutableArray alloc] initWithObjects:nameAndStateDic1,nameAndStateDic2,nameAndStateDic3, nameAndStateDic4,nil];}

  

第三步:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return grouparr.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    if ([grouparr[indexPath.row][@"cell"] isEqualToString:@"TodoCell"]) {                static NSString *cellID = @"cell";        TodoCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];        if (!cell) {            cell = [[TodoCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];                    }        NSData *data = dataArray[indexPath.row];         [cell bindData:data];                return cell;    }    else {                static NSString *CellIdentifier = @"AttachedCell";                AttachedCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];                if (cell == nil) {            cell = [[AttachedCell  alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];                        cell.selectionStyle = UITableViewCellSelectionStyleNone;        }        return cell;    }        return nil;    }

  

第四步:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    //点击cell后 改变cell的颜色 渐变    [_tableView deselectRowAtIndexPath:indexPath animated:YES];        NSIndexPath *path = nil;    if ([grouparr[indexPath.row][@"cell"] isEqualToString:@"MainCell"])    {        if ([grouparr[indexPath.row][@"cell"] isEqualToString:@"MainCell"]) {            path = [NSIndexPath indexPathForItem:(indexPath.row+1) inSection:indexPath.section];        }        else if ([grouparr[indexPath.row][@"cell"] isEqualToString:@"AttachedCell"])        {            path = indexPath;        }            NSLog(@"现在是第%ld行",indexPath.row);            if ([grouparr[indexPath.row][@"state"] boolValue] ) {            // 关闭附加cell            NSMutableDictionary *dd = grouparr[indexPath.row];            NSString *name = dd[@"name"];            NSMutableDictionary *nameAndStateDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",name,@"name",@"NO",@"state",nil];            grouparr[(path.row-1)] = nameAndStateDic;            [grouparr removeObjectAtIndex:path.row];            NSLog(@"MainCell's grouparr:%@",grouparr);            [_tableView beginUpdates];            [_tableView deleteRowsAtIndexPaths:@[path]  withRowAnimation:UITableViewRowAnimationMiddle];            [_tableView endUpdates];        }        else        {            // 打开附加cell            NSMutableDictionary *dd = grouparr[indexPath.row];            NSString *name = dd[@"name"];                    NSMutableDictionary *nameAndStateDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",name,@"name",@"YES",@"state",nil];            grouparr[(path.row-1)] = nameAndStateDic;                    NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"AttachedCell",@"cell",@"YES",@"state",nil];                    [grouparr insertObject:nameAndStateDic1 atIndex:path.row];            NSLog(@"AttachedCell's grouparr:%@",grouparr);            [_tableView beginUpdates];            [_tableView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];            [_tableView endUpdates];        }    }}

  

搞定收工!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表