第一步:
@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]; } }}
搞定收工!
新聞熱點
疑難解答