2011-09-12 3 views
0

나는 특정 조건에서 그 위에 무언가를 추가해야하는 UITableView을 가지고 있습니다. 특정 조건에서 UITableView의 맨 위에 삽입 된 것을 제외한 모든 데이터가 배열에서 가져옵니다.indexPath 조정 iPhone

모든 것이 배열에서 가져 오기 때문에 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 메서드를 호출 할 때마다 배열 객체를 반입하는 indexPath를 수정해야합니다. 로컬 변수를 만들고 indexPath.row의 로컬 버전을 업데이트하려고하면 읽기 전용이라고 알려줍니다.

이것을 구현하는 가장 좋은 방법은 무엇입니까? 아래 그림

은 (이는 코드 것으로 의도되지 않지만, 테이블 뷰의 도면)

(REGULAR SITUATION) (3 lines) 
array objectAtIndex:0; 
----- 
array objectAtIndex:1; 
----- 
array objectAtIndex:2; 

등 등

(MODIFIED SITUATION) (4 lines) 
blah blah modified insertion text here 
----- 
array objectAtIndex:0; 
----- 
array objectAtIndex:1; 
----- 
array objectAtIndex:2; 

등 등 미리

감사 .

답변

2

배열의 시작 부분에 새 항목을 추가하는 것만 큼 없습니까?

// Create a mutable copy and add the item at index 0 
NSMutableArray *mutable = [myData mutableCopy]; 
[mutable insertObject:newItem atIndex:0]; 

// Then store the new array and reload the table 
[myData autorelease]; 
myData = mutable; 
[self.tableView reloadData]; 

그럼 당신은

+0

내가이 정확한 답을 사용하지 않은 : 인덱스 경로를 전혀 재미 아무것도 할 필요가 없습니다, 그러나 그것은 나에게 뭔가 다른 생각을했다. indexPath는 여전히 수정되었지만 적은 코드를 사용하는 하이브리드에 가깝습니다. 누구든지 세부 사항이 필요하면 내 연락처 정보가 내 프로필에 있습니다. – Baub

+0

기꺼이 도와 드리겠습니다! – deanWombourne

1

경로를 지키지 마십시오. tableHeaderView 속성을 UITableView으로 사용하면 테이블 상단에 무언가를 추가 할 수 있습니다. UITableViewCell처럼 스크롤됩니다.

self.tableView.tableHeaderView = aView; 

제거하려면 그냥 nil으로 설정하십시오.

이 방법을한다면, 당신은 당신이 여분의 라인을 필요로하는 경우 단지

[myArray objectAtIndex:indexPath.row-1]; 
2

THIS처럼 indexPath.row에서 1을 빼야하는 상태에서 당신에게 주위 BOOL을 유지 훌륭한 튜토리얼입니다 귀하의 문제를 해결합니다.

사용

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

또는

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

반환을 표시하거나하지 않을 때를 결정하는 동안 사용 조건에 따라 무언가 또는 빈 같은 문자열 /보기.

관련 문제