Hatena::Groupiphone-dev

iPhoneアプリ開発まっしぐら★ このページをアンテナに追加 RSSフィード

引っ越し後の日記はコチラです

tokoromのその他の日記

2009-06-03

テーブルのセルの削除や追加にbeginUpdates/endUpdatesは必要か(1)

15:02 | はてなブックマーク - テーブルのセルの削除や追加にbeginUpdates/endUpdatesは必要か(1) - iPhoneアプリ開発まっしぐら★

エリカ本なんかを見ていると、テーブル(UITableView)からセルを

削除:deleteRowsAtIndexPaths

追加:insertRowsAtIndexPaths

する際には、

beginUpdates/endUpdates

で挟まないといけないよ。。。というように書かれているように見えます。


しかし、Appleのドキュメントをよくよく眺めてみると、どうもそんなことはないようです。

実際、beginUpdates/endUpdatesを使わずに

削除:deleteRowsAtIndexPaths

追加:insertRowsAtIndexPaths

をコールしても全く問題なく動作します。


ドキュメントに記載の内容は以下のとおり

To animate a batch insertion and deletion of rows and sections, call the insertion and deletion methods within an animation block defined by successive calls to beginUpdates and endUpdates. If you don’t call the insertion and deletion methods within this block, row and section indexes may be invalid.

複数の行やセクションを一度に削除/追加してアニメーションさせる際には、削除/追加メソッドをbeginUpdates/endUpdates(アニメーションブロック)で挟んで記述しないといけない。このブロックの中に記載しないと、行やセクションのインデックスが不正になりますよ。

うむ。

要するに一度に複数のセルを操作する際にはbeginUpdats/endUpdatsで挟まないといけないようです。

しかし、それがアニメーションのためなのか、そうしないとデータがおかしくなるのかがはっきりしません。特には最後の一文「行やセクションのインデックスが不正になりますよ」というのが気にかかります。

これは実際に実動を試しておいたほうが良さそうですね。

実際にコーディングして試した結果は次のエントリで。

IlonaIlona 2012/05/30 09:38 Hey, you're the goto exrpet. Thanks for hanging out here.

jbplhxjbplhx 2012/05/30 18:37 iWCx4U <a href="http://yjohlhiofotd.com/">yjohlhiofotd</a>

butgtfhgobutgtfhgo 2012/05/30 22:20 xuJbgK , [url=http://bvrjvjnsuazw.com/]bvrjvjnsuazw[/url], [link=http://lejddcqztbjq.com/]lejddcqztbjq[/link], http://dtddlrdxpgle.com/

snivzxasnivzxa 2012/05/31 23:24 GC6xz1 <a href="http://pccpckguixwb.com/">pccpckguixwb</a>

iyczhukvgduiyczhukvgdu 2012/06/01 04:50 VkzRtg , [url=http://ocgwvahlmpkm.com/]ocgwvahlmpkm[/url], [link=http://qzjxidwolcdq.com/]qzjxidwolcdq[/link], http://tpanhnfgjtei.com/

ゲスト