FMDBで簡単写真アルバムを作ろう Part.9 ~【iPhone】TableViewのセルを削除、commitEditingStyle ~

前回:FMDBで簡単写真アルバムを作ろう Part.8 ~【iPhone】TableViewの画面遷移、異なるView間での値の受け渡し~

簡単写真アルバムのソースコードGitHubからどうぞ
ー>https://github.com/ics-hiro/SelfPhotoLibrary


ここ数回はTableViewについて書いているので、
Appleの「iOS Table View プログラミングガイド
もしっかり読みましょう。

今日は行の削除の記事なので、「iOS Table View プログラミングガイド」では73ページからになります。


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

引用すると、「ユーザが行内の削除コントロールをタップすると、View Controllerは、Table ViewからtableView:commitEditingStyle:forRowAtIndexPath:メッセージを受信します。

ViewController.m

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if( editingStyle == UITableViewCellEditingStyleDelete )
	{
		[self removeContents:indexPath]; 
	}
}

セルが削除された場合、引数にindexPathを渡して、removeContentsメソッドを実行しなさい」と書いています。
削除する処理は削除する処理として別に設定するようにしました。

- (void)removeContents:(NSIndexPath*)indexPath
{
    //選択したrow番目の配列要素を削除する。
    NSInteger row = [indexPath row];
    [titleArry removeObjectAtIndex: row];
    [contentsArry removeObjectAtIndex: row];
    
    //セルが消えるアニメーション       
    [_tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  withRowAnimation:UITableViewRowAnimationFade];
    
    
    //いったん、テーブルの中身を削除してしまう。
    [DataModels drop_table];
    
    
    //titleArryとcontentsArryは、すでに要素が削除されていて、残りの要素がつめられている状態。そしてインサートしている。
    for (int i = 0; i < titleArry.count; i++ ) {
        [DataModels insertTitle:[titleArry objectAtIndex:i] Contents:[contentsArry objectAtIndex:i]];
    }
}

[NSMutableArray] removeObjectAtIndexで配列要素を削除

図解すると、

一番上の「夏目漱石と」のセルを削除した場合、indexPath.rowは0です。
titleArryの0番目も同時に削除するように書いているコードが、[titleArry removeObjectAtIndex: row];の部分となります。

removeObjectAtIndex」で、指定した番目の配列の要素を削除できます。


今回の場合、削除した配列の要素が詰められて、要素に対して新しい配列の番号が振られることになります。
しかし、たとえば夏目漱石と」が削除された場合でも「十何年使ってるハサミ」と「日吉の陸上競技場」の配列の番号を変えたくない場合は、
beginUpdates/endUpdatesをはさんで使うことになります。


今回こちらは使いませんので、興味がある方はこちらの記事を参考にしてください。
テーブルのセルの削除や追加にbeginUpdates/endUpdatesは必要か(1)


【セルが消えるアニメーション】deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade

セルが消えるアニメーションですね。UITableViewRowAnimationFade。




あとは、DataModelsクラスのクラスメソッドにアクセスして、テーブルの中身をまるごと消し、
その後新しい配列を順番にいれている、その際はtitleArryの要素数だけforループでぐるぐる回す、
ということですね。




簡単写真アルバムアプリ記事一覧
FMDBで簡単写真アルバムを作ろう Part.1 ~メモが書ける写真アルバムをつくる~
FMDBで簡単写真アルバムを作ろう Part.2 ~Xcode4.3,SingleViewApplication,FMDB準備~
FMDBで簡単写真アルバムを作ろう Part.3 ~必要なファイルを追加して整理しよう~
FMDBで簡単写真アルバムを作ろう Part.4 ~NavigationBarと画面遷移~
FMDBで簡単写真アルバムを作ろう Part.5 ~【iPhone】SQLiteのデータを出し入れするためのクラスをつくる~
FMDBで簡単写真アルバムを作ろう Part.6 ~【iPhone】UITextField,UIActionSheet,UIImagePickerControllerとメモ、写真の保存~
FMDBで簡単写真アルバムを作ろう Part.7 ~【iPhone】SQLiteのデータを取り出してTableViewに表示~
FMDBで簡単写真アルバムを作ろう Part.8 ~【iPhone】TableViewの画面遷移、異なるView間での値の受け渡し~
FMDBで簡単写真アルバムを作ろう Part.9 ~【iPhone】TableViewのセルを削除、commitEditingStyle ~
FMDBで簡単写真アルバムを作ろう 最終章 ~簡単写真アルバムの完成~


======================
当ブログ管理人のツイッターこちら
◎フォローしてくださると泣いて喜びます!ツイッター上で当ブログの質問などにもできるだけお答えしますし、役に立つiPhoneアプリ開発情報もつぶやきます。個人的なご依頼(たとえば、プログラミングの家庭教師、Skypeレッスンをしてくれないか、iPhoneアプリ開発の勉強会ってやってるの、とかですね)でもかまいません。
スカイプレッスンについて
開発をしているとその都度ぶつかる問題があると思いますが、検索で調べてもなかなかわからない、あるいは調べても非常に時間がかかる場合があると思います。開発者のみなさんもお忙しいと思いますので、私のレッスンを受けながら開発を進めていただけると、大幅にお時間を短縮できます。加えて、iPhoneアプリ開発の基礎、応用が身につき、今後の開発もスムーズに進められます

お問い合わせはツイッター、またはhiyoshimarukoアットマークgmail.comまでお願いします。(アットマークを@にしてください)お待ちしております!