[原]列表的二级展开功能。在原生UITableView上扩展实现。_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > [原]列表的二级展开功能。在原生UITableView上扩展实现。

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

 2015/2/12 14:40:07  大慈大悲大熊猫  程序员俱乐部  我要评论(0)
  • 摘要:还是直接贴代码了。第一步:@interfaceTodoViewController(){//声明一个数组存放cell的信息NSMutableArray*grouparr;}@end第二步://将cell的状态存入数组中-(void)initDataSource{NSMutableDictionary*nameAndStateDic1=[NSMutableDictionarydictionaryWithObjectsAndKeys:@"TodoCell",@"cell",@"NO"
  • 标签:功能 实现 view

  还是直接贴代码了。

第一步:

class="brush:objc;gutter:true;">@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];
        }
    }
}

  

搞定收工!

发表评论
用户名: 匿名