You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.
TODOアプリを作ってみようシリーズの第3回目の演習課題その1です。
内容
#2 に引き続き、この回ではTODOの削除を行います。
目的
教材
Table View Programming Guide for iOS - Inserting and Deleting Rows and Sections
スタート地点
ブランチ add-todo からブランチを切ってから始めてください。
ゴール地点
ブランチ delete-todo にチェックアウトすると回答を見ることができます。
アプリの仕様
実装の方針
UITableViewにはrowの削除や順番の入れ替えを行うことのできる編集モード(editing)があります。
この機能の一つにセルをスワイプした時に削除ボタンを出すことができるのでそれを利用します。
実装は比較的容易で、UITableViewDataSourceのメソッドをいくつか実装するだけです。
TODOの削除 172fe3e
実装するメソッドは以下の二つです。
- tableView:canEditRowAtIndexPath:
- tableView:commitEditingStyle:forRowAtIndexPath:
- tableView:canEditRowAtIndexPath:
はすべてのセルで削除できるので常にYESを返します。- tableView:commitEditingStyle:forRowAtIndexPath:
では実際の削除動作を行います。削除は以下のステップで行います。
1. データ構造からの削除
todoを保持しているデータ構造(現在だとViewController.todo)から削除します。
NSArrayでtodoを保持していると削除できないのでNSMutableArrayで持つようにしてください。
248e9a2
2. tableViewから削除
UITableViewからrowを削除するもっとも簡単な方法は
[tableView reloadData];
を行うことですが、この場合はアニメーションが追加されません。動的な更新を行う場合は、
[tableView beginUpdates];
と[tableView endUpdates];
の間で更新処理を行います。tableViewから行を削除するには
- deleteRowsAtIndexPaths:withRowAnimation:
を実行します。The text was updated successfully, but these errors were encountered: