2009-08-04 5 views
1

이것이 쉬운 일이라고 확신합니다. 나는 객관적인 C에 아주 새롭다 (사장이 아웃소싱 할 일을 집어 들었다). 내가 얻을 수있는 모든 도움을 사용할 수 있었다. 여기에 올바른 방향으로 나를 가리 키십시오. 기본적으로 설정하고자하는 것은 다음과 같습니다.선택한 경우 UITableView 행을 목록 맨 위로 이동

필자는 필요한만큼 많은 행으로 확장되는 전화 번호 목록을 가지고 있습니다. 채워지는 데 문제가 없으며 목록이 제대로 작동하지만 목록에서 최근에 선택한 항목을 모두 더 쉽게 액세스 할 수 있기를 바랍니다. 그래서, 사용자가 "didSelectRowAtIndexPath"때마다, 행을 맨 위로 이동하고 싶습니다.

나는 이것에 대해 간단하게 알고 있습니다 ...하지만 아직 해결책을 찾지 못했습니다. 서둘러. 나는 혼자 힘으로 생각하고있다. 미리 감사드립니다!

답변

3

요소의 순서는 테이블 뷰가 아닌 데이터 소스 (코드)의 책임입니다. 일을 재정렬하려면 -cellForRowAtIndexPath:을 사용하는 데이터 구조를 재정렬해야합니다. 애니메이션을 원한다면 좋은 움직임 애니메이션이 아직 없다고 생각합니다. 아마도 (쉽게) 할 수있는 최선의 방법은 삭제와 삽입을 수행하는 것입니다. 자세한 내용은 Batch Insertion and Deletion of Rows and Sections을 참조하십시오. 몇 달 전에 UITableView 개발자들에게 OS2.x에서 이러한 애니메이션의 일반적인 버그와 취약성에 대해 물어 보았고 OS3에서 많은 작업이 향상되었다고 확신했습니다. 그래서 문서를 따라 가면 더 이상 충돌하지 않아야합니다.

0

jQuery과 내가 실제로 비록 코드를 작성해야 생각 불리는 방법

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath

을 가지고 내가 (나는 새도 해요) 테이블에 함께 일한 적이 있기 때문에, 잘 모르겠어요 .

2

테이블의 한 위치에서 다른 위치로 행을 제거 할 수있는 기능이 없습니다. 그것은 새로운 위치가 다시 추가 한 후 행을 제거하고 에뮬레이션 할 수 있습니다

// Remove the row from your datasource here 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:sourcePath] withRowAnimation:UITableViewRowAnimationLeft]; 
// Add the row back into the datasource here 
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:destPath] withRowAnimation:UITableViewRowAnimationLeft]; 

이 데이터 소스를 업데이트 할 적절한 명령을 사용하여 의견을 교환

0

이 (작업 코드 목록)를보십시오 :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

if(indexPath.row == 0) return; 

NSString * selectedNum = [numbers objectAtIndex:indexPath.row]; // NSMutableArray* numbers = dataStore 
[selectedNum retain]; 

[numbers removeObjectAtIndex:indexPath.row]; 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
      withRowAnimation:UITableViewRowAnimationLeft]; 
[numbers insertObject:selectedNum atIndex:0]; 
[tableView insertRowsAtIndexPaths:[NSArray 
      arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] 
      withRowAnimation:UITableViewRowAnimationLeft]; 

[selectedNum release]; 

}

+0

안녕 @Tomas, 당신의 코드가 작동하지만, 우리는 명확한 응용 프로그램과 같은 애니메이션 효과를 가질 수 있습니다 – Ranjit

관련 문제