Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2014年09月27日

iOS8でUITableViewでセルを削除したときにクラッシュするようになった場合のチェックポイント



iOS7以前から稼働していたアプリで、Xcode6でiOS8向けのビルドをして実行したとき、iOS8でUITableViewでセルを削除したときにクラッシュするようになった場合の対処法。

古いプロジェクトの場合、tableView commitEditingStyleメソッドでセルを削除した直後にクラッシュすることがある。

古いプロジェクトには、セルの削除処理前後にセル更新開始をUITableViewに通知するbeginUpdates、セル更新終了をUITableViewに通知するendUpdates、セル数の更新処理 deleteRowsAtIndexPathsが記述されていないことがあるので、これを記述することにより、セルが適切に削除されるようになる。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if (editingStyle == UITableViewCellEditingStyleDelete) {

[self.tableView beginUpdates];

// セルの削除処理を記述

[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

[self.tableView endUpdates];
}
}

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {

[self.tableView reloadData];

}





タグ:iPhone Mac IOS apple iPAD
posted by mobileDeveloper at 16:24 | Comment(0) | TrackBack(0) | UITableView はてなブックマーク - iOS8でUITableViewでセルを削除したときにクラッシュするようになった場合のチェックポイント | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/406121138
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。