2012-07-09 76 views
0

我想要做的是在UITableView上,用戶滑動一行以啓動刪除選項,一旦他們按下刪除,然後UIActionSheet彈出以確保他們想刪除該行,因爲它比一個更重要典型的行在一張桌子裏。根據他們所按的內容,我可以從數據庫中刪除該行中的數據。但是,如何將該行的indexPath放入UIActionSheet?如果我有一個部分表,那麼我可以使用該行的標記並重新創建indexPath,但是有多個部分,這怎麼做?UIActionSheet,在繼續之前獲取clickedButtonIndex?

好像有可能是由具有categoroy什麼更好的方法,以便在我

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

方法,我可以刪除在那裏的行。或者有沒有辦法從UIActionSheet傳回信息?謝謝!

回答

0

-tableView:commitEditingStyle:forRowAtIndexPath:中,您可以將indexPath作爲屬性/ ivar存儲,然後顯示ActionSheet

當用戶確認刪除時,只需刪除數據(您已經存儲了indexPath!)並從tableview(-deleteRowsAtIndexPaths:withRowAnimation:-reloadData)中刪除單元格。不要忘記保留/釋放indexPath

0

幾件事情:

  1. 我不會用一個UIActionSheet,我會用一個UIAlertView中。
  2. 被刪除的行被「編輯」可以被設置爲selectedRow。
  3. 如果用戶選擇「是」繼續並刪除該行按鈕,然後就可以調用的UITableView對象的

[indexPathForSelectedRow]方法。無需保存額外的NSIndexPath對象或記住狀態。 TableView已經爲你做了。

0

我通過設置標籤用於騙取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 

    } 

}

編輯:剛纔看到微妙的多個部分你使用。通過向它添加indexPath屬性來擴展UIActionSheet將有助於您的情況?

或將標記設置爲'x'位數,前半部分表示部分,後半部分表示行。

相關問題