2012-07-09 2 views
0

내가하고 싶은 일은 UITableView에서 사용자가 삭제 옵션을 불러 오기 위해 행을 스 와이프 한 다음 삭제를 누른 다음 UIActionSheet가 팝업으로 나타나서 행을 삭제하려고하는지 확인합니다. 테이블의 전형적인 행. 그들이 무엇을 누르는가에 따라 데이터베이스에서 해당 행의 데이터를 삭제할 수 있습니다. UIActionSheet에 해당 행의 indexPath를 어떻게 얻을 수 있습니까? 하나의 섹션 테이블이있는 경우 해당 행에 태그를 사용하고 indexPath를 다시 만들 수 있지만 여러 섹션이 있으면 어떻게 수행 할 수 있습니까? 내UIActionSheet, 진행하기 전에 clickedButtonIndex를 얻으시겠습니까?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

방법 있도록 categoroy 또는 무언가를 가짐으로써 더 나은 방법이 될 수 있었던 것처럼

그것은 보인다, 난 그냥 거기에 행을 삭제할 수 있습니다. 아니면 UIActionSheet의 정보를 되돌려 보낼 수있는 방법이 있습니까? 감사!

답변

0

-tableView:commitEditingStyle:forRowAtIndexPath:에서 indexPath을 속성/ivar로 저장 한 다음 ActionSheet을 표시 할 수 있습니다.

사용자가 삭제를 확인하면 저장 한 데이터 (indexPath!)를 삭제하고 tableview (-deleteRowsAtIndexPaths:withRowAnimation: 또는 -reloadData)에서 셀을 제거하면됩니다. indexPath을 유지하거나 배포하는 것을 잊지 마십시오.

0

몇 가지 :

  1. 내가 UIActionSheet를 사용하지 않을, 내가 UIAlertView를 사용합니다.
  2. 삭제를 위해 "편집 된"행을 selectedRow로 설정하거나 설정할 수 있습니다.
  3. 사용자가 "예"가서 삭제 해당 행 버튼을 선택하면
  4. , 당신은 jQuery과 개체의

[indexPathForSelectedRow] 메서드를 호출 할 수 있습니다. 추가 NSIndexPath 개체를 저장하거나 상태를 기억할 필요가 없습니다. TableView는 이미이를 수행하고 있습니다.

0

I가 태그를 설정하여 속임수 actionSheet = indexpath.row

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // If row is deleted, remove it from the list. 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
     UIActionSheet *registerActionSheet = [[UIActionSheet alloc] initWithTitle:@"Sure You Want To Delete?"delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:ACTION_SHEET_DELETE_BUTTON_TITLE otherButtonTitles: nil]; 
     registerActionSheet.tag = indexPath.row; 
     registerActionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
     [registerActionSheet showInView:self.view]; 
    } 
} 

다음

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ 
    if ([[actionSheet buttonTitleAtIndex:buttonIndex] isEqualToString:ACTION_SHEET_DELETE_BUTTON_TITLE]) { 

     //do deleting stuff here using actionSheet.tag as index 

    } 

}

편집 : 당신은 여러 섹션에 미묘함을보고 그냥 사용. 확장 된 UIActionSheet에 indexPath 속성을 추가하면 귀하의 경우 도움이 될 것입니까?

또는 'x'자릿수로 태그를 설정합니다. 전반은 섹션을 나타내고 두 번째 절반은 행을 나타냅니다.