• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:tableView reloadDataが出来ない)

TableView reloadDataができない

このQ&Aのポイント
  • Xcodeを使用してObjectiveCでiPhoneアプリの開発をしています。
  • TableViewControllerでボタンを押すとセルが追加される処理を組みたいですが、うまくいきません。
  • ボタンのactionメソッドの最後に[self.tableView reloadData];と記述していますが、テーブルの表示が更新されず、追加したデータが表示されません。

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

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

それで、セルを追加するボタンに実装したメソッドは、どれですか?そして、そのメソッドには、NSMutableArray「tagList」に、新規要素をinsertする実装はしてありますか?

ifonesapp
質問者

お礼

回答ありがとうございます。 返事遅くなって申し訳ありません>< 多忙でプログラムを触る時間がありませんでした。 これから見返し明日までに補足しますので、もし良かったら引き続きよろしくお願いしますm()m

ifonesapp
質問者

補足

回答ありがとうございます! セルを追加するボタンに実装したメソッドはIBActionのtagCreateメソッドです。 allAllALLメソッドが、NSMutableArray「tagList」に、新規要素をinsertする実装となっております。 [self.tableView reloadData];でテーブルのビューが更新されるとの事で、 viewWillAppearが読み込まれるものだと思っていたのですが、そうでは無かったようですね。 そうなると、[self.tableView reloadData];というのが、どういう処理をしているのかイマイチ分かりません。 更新といっても何を更新しているのか・・・ これに関しては新しく質問を建てようと思いますが、 質問の問題に関しては、tagCreateメソッドの最後にallAllALLメソッドの処理を組み込む事で、ボタンを押すと同時に新しい項目が表示させる事ができました! 感謝です!

その他の回答 (3)

  • m0a13
  • ベストアンサー率47% (9/19)
回答No.3

他に方法もありますがUITableViewのreloadDataでも行追加の表示更新は出来ます。 出来ないのであれば ・UITableViewのUITableViewDataSource実装内の、tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:に追加したデータが反映されていない ・reloadDataをメインスレッドで行っていない などの原因が考えられます。

ifonesapp
質問者

お礼

回答ありがとうございます!

ifonesapp
質問者

補足

>・UITableViewのUITableViewDataSource実装内の、tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:に追加したデータが反映されていない おそらくこれが原因と思われます。 [self.tableView reloadData];をすれば、これらのメソッドを再度読み込んでテーブルのビューを更新するのかと思っていましたが、違うのでしょうか・・・ これらのメソッドをボタンをタップした時のActionメソッドに組み込む方法はあるのでしょうか? でも、あまりこのメソッドを繰り返し使うと、テーブルの表示がどんどん重なってメモリ不足の原因になりそうな気もします。

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

No.1の追加です。 ためしに、reloadDataメソッドを使ってみましたが、ただアニメーション効果がないだけで、テーブルの行追加が反映されて表示されました。 これ以上は、あなたが書いたじっさいのプログラムコードを見せていただかないと、なんとも回答はできないでしょう。

ifonesapp
質問者

お礼

回答ありがとうございます! 補足に実際のプログラムを記述しますので、少しお時間をください。

ifonesapp
質問者

補足

■tagSelectViewController.h #import <UIKit/UIKit.h> @interface tagSelectViewController : UIViewController{ NSMutableArray *tagList; } @end ■tagSelectViewController.m http://www.dotup.org/uploda/www.dotup.org5336095.txt FMDBを使っているので、少し分かりづらいかもしれません。すみません。 FMDBからデータを読みとり、そのデータをテーブルに表示し、 追加ボタンを押すことで新たなデータを追加する事はできているのですが ビューの移動をしないと画面上が更新されません。 データが追加されると同時に、ビューを更新したいと思っています。 アドバイスお願いします。

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

テーブルの行を増減するプログラムの場合、教科書的な手法なら、reloadDataメソッドを呼ぶことはないんですけど、どういうプログラムを作っていらっしゃるんですか? いちどApple提供のプログラミングガイドを一読なさってはいかがですか?Table Viewのガイドももちろんありますから、それで教科書的な手法を理解したうえで、自分流のプログラムをお考えになってはいかがですか?

ifonesapp
質問者

お礼

回答ありがとうございます。 不十分な説明で申し訳ありません 追加回答の補足にコードの詳細を書きましたので、そちらをご覧いただきたいと思います。