ささっ、続きをやっていきます。
前回はモード切り替えボタンを作ってみましたよね。
今回はそれをちゃんと動作するようにしましょう。
ほんじゃさっそく、やってこうかな。
「ContactListViewController.m」を触ります。
セルの挿入/削除がされた時に呼ばれるメソッドtableView commitEditingStyle:があるので、
コメントアウトを外して以下の様にします。
実際、追加するのは赤い部分だけみたいです、
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[manager removeAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
これだけやっていっかい実行したらどうなるでしょう。
実行!

前は「Edit」ボタンを押しましたが、今回はセルをヒョイっと横にドラッグ
iPhoneでいうと、フリックというやつです。
それをしてみると「Delete」が出てきます。
メールの削除とかする時につかったりしますね(‐^▽^‐)

で、「Delete」を押したら消えます。
その瞬間をうまい具合に激写できたので、これがその画像です。

はい、消えました。

今日はもうちょっとがんばって、セルの移動やってみましょう。
同じく「ContactListViewController.m」を触ってしまいます。
tableView canMoveRowAtIndexPath:
tableView moveRowAtIndexPath:
tableView targetIndexPathForMoveFromRowAtIndexPath:
の三つを実装しますが、最初の二つはコメントアウトされているので、
それを外してちょこっといじります。
一つ目はテーブルのセルについて並べ替えの可否を設定しています。
二つ目はセルが移動するときに呼ばれるメソッドです。
その一つ目と二つ目が以下です。
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
[manager moveFromIndex:fromIndexPath.row toIndex:toIndexPath.row];
}
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the item to be re-orderable.
return YES;
}
次に、三つ目を追加しますが、うーん、これを別に入力しなくても
とりあえず動くんですよねー。(やってみたら)
まぁあとから必要になってくるかもしんないから入れときます。
試せる方は、追加する前とした後の両方を実行してみてください。
状況は変わんないと思うので。
ちなみにこれは移動後のセルの位置を返すメソッドのようです。
適当なところにこのメソッドを実装します。
- (NSIndexPath *)tableView:(UITableView *)tableView
targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath
toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {
return proposedDestinationIndexPath;
}
よぉーし、実行!
初期画面。

「Edit」ボタンクリック。
おぉ。右に「並べ替えできますマーク」がでてきましたよ!

並び替え途中の図w
宙に浮く感じが何とも言えないです。

移動させました。

「Edit」ボタンクリックで完了なり。

こんなもんでどないでしょうか??
次は、データが選択されたらそのデータに登録されている別の情報の「住所」をポップアップで表示されるようにしたいと思います。
もうちょっとで完成ですよー^^
クリックして応援してください↓

にほんブログ村
> 次のテーマ テーブルをつくっていこう。
> テーブルのデータを管理するクラスを作ってみる
> テーブルビューのコントローラーを作ってみる。
> ついにテーブルの表示完成!
> テーブルをいじくる。
> テーブルを本当にいじくる
> テーブルを本当に実装を始めるよ。
> テーブルを改造しましょ。
> テーブル改造のつづきやけど。。
> テーブルのセルに電話番号を追加してみる。
> モード切り替え用ボタンの追加
> セル(データ)の削除処理と並び替え!(★この記事★)
> テーブルいじくりも大詰め?
前回はモード切り替えボタンを作ってみましたよね。
今回はそれをちゃんと動作するようにしましょう。
ほんじゃさっそく、やってこうかな。
「ContactListViewController.m」を触ります。
セルの挿入/削除がされた時に呼ばれるメソッドtableView commitEditingStyle:があるので、
コメントアウトを外して以下の様にします。
実際、追加するのは赤い部分だけみたいです、
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[manager removeAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
これだけやっていっかい実行したらどうなるでしょう。
実行!

前は「Edit」ボタンを押しましたが、今回はセルをヒョイっと横にドラッグ
iPhoneでいうと、フリックというやつです。
それをしてみると「Delete」が出てきます。
メールの削除とかする時につかったりしますね(‐^▽^‐)

で、「Delete」を押したら消えます。
その瞬間をうまい具合に激写できたので、これがその画像です。

はい、消えました。

今日はもうちょっとがんばって、セルの移動やってみましょう。
同じく「ContactListViewController.m」を触ってしまいます。
tableView canMoveRowAtIndexPath:
tableView moveRowAtIndexPath:
tableView targetIndexPathForMoveFromRowAtIndexPath:
の三つを実装しますが、最初の二つはコメントアウトされているので、
それを外してちょこっといじります。
一つ目はテーブルのセルについて並べ替えの可否を設定しています。
二つ目はセルが移動するときに呼ばれるメソッドです。
その一つ目と二つ目が以下です。
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
[manager moveFromIndex:fromIndexPath.row toIndex:toIndexPath.row];
}
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the item to be re-orderable.
return YES;
}
次に、三つ目を追加しますが、うーん、これを別に入力しなくても
とりあえず動くんですよねー。(やってみたら)
まぁあとから必要になってくるかもしんないから入れときます。
試せる方は、追加する前とした後の両方を実行してみてください。
状況は変わんないと思うので。
ちなみにこれは移動後のセルの位置を返すメソッドのようです。
適当なところにこのメソッドを実装します。
- (NSIndexPath *)tableView:(UITableView *)tableView
targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath
toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {
return proposedDestinationIndexPath;
}
よぉーし、実行!
初期画面。

「Edit」ボタンクリック。
おぉ。右に「並べ替えできますマーク」がでてきましたよ!

並び替え途中の図w
宙に浮く感じが何とも言えないです。

移動させました。

「Edit」ボタンクリックで完了なり。

こんなもんでどないでしょうか??
次は、データが選択されたらそのデータに登録されている別の情報の「住所」をポップアップで表示されるようにしたいと思います。
もうちょっとで完成ですよー^^
クリックして応援してください↓
にほんブログ村
> 次のテーマ テーブルをつくっていこう。
> テーブルのデータを管理するクラスを作ってみる
> テーブルビューのコントローラーを作ってみる。
> ついにテーブルの表示完成!
> テーブルをいじくる。
> テーブルを本当にいじくる
> テーブルを本当に実装を始めるよ。
> テーブルを改造しましょ。
> テーブル改造のつづきやけど。。
> テーブルのセルに電話番号を追加してみる。
> モード切り替え用ボタンの追加
> セル(データ)の削除処理と並び替え!(★この記事★)
> テーブルいじくりも大詰め?