UITableView를 주소록 편집기의 테이블처럼 동작 시키길 원합니다. 즉, 사용자가 편집을 눌러야하고 "새 카테고리 추가"행이 각 섹션 하단에 나타나야합니다.UITableView에서 삽입 행 사용하기
아래 코드를 사용하고 있지만 연락처에있는대로 전환이 원활하지 않은 것이 문제입니다. 대신 새로운 행이 갑자기 나타납니다. 애니메이션을 어떻게 얻을 수 있습니까?
또한 '새 카테고리 추가'행의 클릭에 어떻게 응답합니까? 현재 구현에서 행을 클릭 할 수 없습니다.
사용자가 편집을 시작할 때 데이터를 다시로드해야합니까? 그렇지 않으면 삽입 행이 그려지지 않기 때문에이 작업을 수행하고 있습니다.
감사합니다. 행에 대한 클릭에 응답
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
[tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)_tableView numberOfRowsInSection:(NSInteger)section {
// ...
if(self.tableView.editing)
return 1 + rowCount;
}
- (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// .....
NSArray* items = ...;
if(indexPath.row >= [items count]) {
cell.textLabel.text = @"add new category";
}
// ...
return cell;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
NSArray* items = ...;
if(indexPath.row == [items count])
return UITableViewCellEditingStyleInsert;
return UITableViewCellEditingStyleDelete;
}
이 (아래, 대답과 함께) 매우 도움이되었다 :
귀하의 코드를 변경해야 할 것입니다. 'tableView : editingStyleForRowAtIndexPath :'에서'=='을 사용하는 동안'tableView : cellForRowAtIndexPath :'의 행 개수 비교는'> ='을 사용합니다. 큰 문제는 아니지만 그것들간에 일관성이 있어야합니다. '> ='는 Insert 행의 우발적 인 이중 추가를 다루지 만,'=='는 그 상황을 초래할 수있는 코드 오류에 대한 예외를 던짐으로써 도움을 줄 것입니다. –