2010-12-10 4 views
3

사용자가 보유한 다른 사용자 이름을 제공 할 수있는 앱을 만들고 있습니다. 비전은 사용자가 UITableViewCell을 추가 및 제거하여 사용자 이름을 입력 할 수 있다는 것입니다.UITableView에 UITableViewCells를 동적으로 추가 및 제거합니다.

지금은 그룹화 된 UITableView가 있고 각 UITableViewCell의 오른쪽에는 UITextField가있는 테이블에 다른 셀을 추가하는 UIButton이 있습니다. 첫 번째 셀 다음에 모든 셀에 삭제 버튼이 있습니다. 그 행을 UIButton 삭제하려고합니다. 셀을 제거하는 IBAction이 있는데 유일한 문제는 적절한 행을 삭제하지 않는 것입니다.

내가하려는 일을하는 가장 좋은 방법은 무엇입니까? Google에서 제대로 검색하는 방법을 모르겠습니다. 나는 누군가가 내가하려고하는 것을했다고 확신한다.

미리 도움 주셔서 감사합니다.

답변

7

Derek가 위에서 말한 것과 비슷합니다 - UITableViewController은 이미 행을 삭제하는 기능을 제공합니다.

UITableView을 편집 전환과 같이 수행합니다 또한

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    if ([indexPath row] == 0) { 
      return NO; 
    } 

    return YES; 
} 

: 같은과 [self.tableView setEditing:!self.tableView.editing animated:YES];

재정 tableView:canEditRowAtIndexPath:을 (첫 번째 행이 삭제 가능한 싶지 않아처럼 소리 때문에) 재정의 tableView:commitEditingStyle:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     [self.dataArray removeObjectAtIndex:[indexPath row] - 1]; 

     // delete the row from the data source 
     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 
    } 
} 

희망이 있습니다.

2

이미 테이블 뷰에 코드를 작성하려고하는 것처럼 들립니다. 테이블 뷰의 내장 된 편집 기능을 살펴보면 테이블 뷰와 위임자가 편집 버튼 기능을 내장 할 필요가 없다는 것을 알 수 있습니다.

잘못된 것을 삭제하는 것에 대한 귀하의 의견은 저를 생각하게 만듭니다 소스 데이터의 인덱스와 행 번호를 일치시키는 데 문제가 있습니다.

관련 문제