- (BOOL)cellIsSelected:(NSIndexPath *)indexPath
{
// Return whether the cell at the specified index path is selected or not
NSNumber *selectedIndex = [selectedIndexes objectForKey:indexPath];
return selectedIndex == nil ? FALSE : [selectedIndex boolValue];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Deselect cell
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// Toggle 'selected' state
BOOL isSelected = ![self cellIsSelected:indexPath];
// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
[selectedIndexes setObject:selectedIndex forKey:indexPath];
// This is where magic happens...
[beveragesTableView beginUpdates];
[beveragesTableView endUpdates];
[selectedIndexes removeAllObjects];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// If our cell is selected, return double height
if ([self cellIsSelected:indexPath] && ![[descriptionTypeArray objectAtIndex:indexPath.row] isEqualToString:@" "])
{
return kCellHeight * 2.0;
}
// Cell isn't selected so return single height
return kCellHeight;
}
selectedIndexes 난은 애니메이션 동안 상기 셀에 존재하는 여부 .. 설명 기초 애니메이션화의 tableview를 .H 파일 에서 선언되는 객체 ofNSMutableDictonary 작성한된다 jQuery과 셀 애니메이션 해제하기되지 내가 행을 선택하면 행 크기가 커지고 행 크기가 정상 높이로 돌아 가야합니다. 다른 행/셀을 선택할 때만 할 수 있습니다. 셀로 돌아가고 싶습니다. 선택한 행을 탭하면 정상 높이가됩니다.행은
질문 하나 : 당신은 사용자가 한 번에 두 개 이상의 항목을 선택 할 수 있도록하려면 그것은 전적으로 분명 아니면 하나만? 당신은 NSMutableArray를 구현했다. 그러나 사용자가 하나를 탭하면 선택한 모든 색인이 지워집니다. –
사용자는 한 번에 하나의 항목 만 선택해야합니다. 거기에있는 코드는 사용자가 한 번에 하나의 항목 만 선택할 수있게 해줍니다. 사용자가 건 드리면 첫 번째 항목이 셀을 증가 시킨다는 것입니다. 사용자가 동일한 항목을 터치하면 셀은 정상 높이로 돌아갑니다. 나는 그것을 할 방법을 그림 수 없습니다 오전 – orgami
내가 selectedIndexes 배열에 몇 가지 문제가 있다고 생각합니다. 그 중 한 셀 만 선택할 수 있다고 말합니다. 그런 다음 배열의 insted는 NSIndexPath * selectedIndex를 사용합니다 (셀이 선택되지 않으면 nil이 될 수 있음). 코드는 그렇게 쉽게 읽고 문제를 쉽게 찾을 수 있습니다. –