スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]UITableViewの利用時のエラー

UITableViewを利用して要素を追加しようとして、
行のタップ時のイベント
"didSelectRowAtIndexPath"が呼ばれた際に、
"insertRowsAtIndexPaths: withRowAnimation:"を呼び出して行を追加しようとした際のエラーです。

2011-05-30 11:26:34.179 ImtDic[1925:207] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:995
2011-05-30 11:26:34.182 ImtDic[1925:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (3) must be equal to the number of rows contained in that section before the update (3), plus or minus the number of rows inserted or deleted from that section (4 inserted, 0 deleted).'



上記エラーが出る場合、自分がセル生成時("cellForRowAtIndexPath"のタイミング)にNSMutableArrayを利用してセル要素を生成しているかを確認する必要がある。
もし利用しているならこいつの要素と、追加した行数とが同期していない可能性が高い。

結論として、行を追加/削除するタイミングで同じようにその配列を追加/削除してあげれば解決する。

一例)押した行に要素を追加する場合

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
 [cellArray insertObject:[child_category_data objectAtIndex:i]
         atIndex:indexPath.row];
 NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section];
 [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:path]
          withRowAnimation:UITableViewRowAnimationTop];
}

このエントリーをはてなブックマークに追加
Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。