을 주셔서 감사합니다. 당신이 그 방법으로 확장 된 세포를 적절히 고려하지 않는 한, 다른 세포가 그 위에 흘러가거나 그 밑에 숨겨진 것을 발견하게 될 것입니다. heightForRowAtIndexPath를 설정하는 것을 잊어 버린 골치 아픈 코드에서 다른 셀이 그 위에 표시 될 것입니다.
수천 개의 행을 처리하므로 사용자가 셀을 재정렬 할 수 없다고 가정합니다.
사용자가 주어진 셀을 탭하면 확장 된 셀의 인덱스 경로를 저장할 수 있습니다. 그런 다음, heightForRowAtIndexPath은 다음과 같습니다 당신이 정말로 여러 항목을 선택하려면
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
if ([indexPath isEqual:lastSelectedIndexPath])
{
return 80;
}
else {
return 44;
}
}
, 당신은 배열에 적절한 인덱스 경로를 저장하고 다음과 같이 그들을 위해 확인할 수 있습니다 :
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
CGFloat cellHeight = 44;
for (NSIndexPath *expandedIndexPath in expandedIndexPathsArray)
{
if ([indexPath compare:expandedIndexPath] == NSOrderedSame)
{
cellHeight = 80;
break;
}
}
return cellHeight;
}
에 애니메이션을 얻기 오른쪽을 보면 약간의 작업이 필요할 것입니다. 나는 잠시 동안이 특정 UI 아이디어를 가지고 놀았으며 앉아서 실제로 그렇게 할 수 없었습니다. 당신이 할 수있는 한가지는 그것의 뒤에 tableview를 업데이트하면서 움직이는 더미 뷰를 디스플레이하는 것입니다. 당신이 당신의 확장을 수용하기 위해 아래 세포의 움직임을 시뮬레이션하기 위해 셀 애니메이션을 사용할 수 있습니다로
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPathswithRowAnimation:(UITableViewRowAnimation)animation
이에 대한 관심이 될 수 있습니다.
셀의 프레임을 모두 애니메이션하는 것을 허용 할 수없는 경우 새 높이가 설정되면 확장 된 데이터의 불투명도 애니메이션을 수행 할 수 있습니다.
힘든 일이지만 만약 당신이 그것을 작동하게한다면 나는 아주 멋지다고 확신합니다. 행운을 빕니다.
감사합니다. Danilo, 저를 올바른 길로 시작했습니다. didSelectRowAtIndexPath 내에서 reloadRowsAtIndexPaths를 사용하여 작동 시키게되었습니다. 언급 한 것처럼 셀이 확장되어 있는지 확인하고 heightForRowAtIndexPath에 해당 높이를 설정합니다. 다시 한 번 감사드립니다! – Justin
너무 쿨! 다행스럽게도 도움이 될만한 정보를 제공합니다. 그것이 효과가 있기를 바랍니다. 어쩌면 내가 마침내 나 자신에게 시도해 볼지도 모르겠다. –
'[indexPath compare : expandedIndexPath] == NSOrderedSame'은'[indexPath isEqual : expandedIndexPath]'로 작성되어야합니다. – user102008