2012-03-17 2 views
1

iは、ボタンを削除マイナスボタンショーをクリックeditButtonItemの「削除」にアクションを与える方法は?私は私のテーブルビューできた

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

てきました。この[削除]ボタンにアクションを与える方法を知りたい。 Tableviewはsqliteデータベースからの項目のリストを表示します。私はXcode 4.2を使用しています。

+0

つまり、「削除」以外の操作ですか?何をしたいですか?実際には – jrturton

+0

を削除してください。行は削除を取得する必要があります。今のところそれは削除されていません – jason

答えて

4

削除ボタンはすでにあなたのテーブルビューにリンクされており、タップするとテーブルビューのデータソースにtableView:commitEditingStyle:forRowAtIndexPath:が送られます。ここであなたの削除を行います。

このメソッドは通常、UITableViewControllerサブクラスのテンプレートに含まれています。

+0

しかし、行は削除されていません。それはデータベースから削除する必要があります、右か? – jason

+0

あなたがそれを指示した場合のみ。あなたのコードを質問に入れてください。 – jrturton

1

UITableViewDataSource Protocol Referenceを見ると、そこにはtableView:commitEditingStyle:forRowAtIndexPath:があります。

データソースに受信者の指定された行の挿入または削除をコミットするように指示します。

この方法では、削除するセルのインデックスパスを取得します。 4つのデータソースでcorespondent要素を削除する必要があります。テーブルビューセルも削除する必要があります。

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
1

tableView:commitEditingStyle:forRowAtIndexPath:をテーブルビューのデータソース(おそらくテーブルビューコントローラ)に実装します。詳細は&サンプルの使用方法については、そのメソッドのドキュメント、またはいくつかのAppleサンプルコードプロジェクト(Xcodeの "マスターディテールアプリ"テンプレートから得られるものを含む)を参照してください。私はそれが画面上に更新できるようにあなたがテーブルのデータを再ロードされていることを確認する必要があることを追加します

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath. 
{ 
// Check if it's a delete button or edit button... 

    if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 

    // Update the array and table view. 
    [eventsArray removeObjectAtIndex:indexPath.row]; 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 

    // Commit the change. 

    NSError *error; 

    if (![managedObjectContext save:&error]) 
    { 
     // Handle the error. 
    } 
} 

} 
1

が自動的UITableViewこのdelegateメソッドを呼び出します。さもなければ、それは何もしなかったように見えるでしょう。

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.myMutableArray removeObjectAtIndex:indexPath.row]; 
    [self.tableView reloadData]; 
} 
関連する問題