• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:iphoneでTableViewに動的追加できない)

iPhoneでTableViewに動的追加できない

このQ&Aのポイント
  • iPhoneでUITableViewを使ってWebから取得した情報を表示しようとしていますが、非同期にセルを追加することができません。
  • テストアプリを作成していますが、初期状態が空欄の場合や挿入時のアニメーションに関して問題が発生しています。
  • (1)の初期値設定や(5)のセクション表示に関連してエラーが発生しているようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

> 疑問1 // barを追加 [dataSouce addObject:@"bar"]; [self.tableView beginUpdates]; NSIndexPath* path = [NSIndexPath indexPathForRow:0 inSection:0]; // (2) 引用中の1行目を、書き換えます。 [dataSouce insertObject: @"bar" atIndex: 0]; NSMutableArrayの「addObject:」は、配列の末尾にオブジェクトを追加します。 > 疑問2 「-(void)onTimer:(NSTimer*)timer」の内容を、次のように変更してください。 [dataSouce insertObject:@"bar" atIndex: 0]; if ([dataSouce count] > 0) { NSIndexPath* path = [NSIndexPath indexPathForRow:0 inSection:0]; [self.tableView beginUpdates]; [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:path] withRowAnimation:UITableViewRowAnimationTop]; [self.tableView endUpdates]; } else { [self.tableView reloadData]; } UITableViewのリファレンス(http://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/)、「beginUpdates」の説明に…… You should not call reloadData within the group; とあります。 > 疑問3 テーブルセルがなにもない状態から、テーブルセルがある状態へのアニメーションはできないということなのでしょう。上記の変更をすれば、こちらも解消するはずです。 エラー「SIGABRT」は、内容のないNS(Mutable)Arrayに対して、要素を参照したから、発生したのだと考えられます。

jjk65536
質問者

お礼

丁寧にコードを読んでいただいてありがとうございます! ご指摘いただいた修正で完璧に動作しました。本当にありがとうございます! Appleのドキュメントを読むことを怠ったのが最大の問題ですね。 今後は読むようにします。

その他の回答 (1)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

No.1の訂正です。 変更したコードのうち、 if ([dataSouce count] > 0) { を if ([dataSouce count] > 1) { に訂正します。すみません。