- ベストアンサー
TableView reloadDataができない
- Xcodeを使用してObjectiveCでiPhoneアプリの開発をしています。
- TableViewControllerでボタンを押すとセルが追加される処理を組みたいですが、うまくいきません。
- ボタンのactionメソッドの最後に[self.tableView reloadData];と記述していますが、テーブルの表示が更新されず、追加したデータが表示されません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
それで、セルを追加するボタンに実装したメソッドは、どれですか?そして、そのメソッドには、NSMutableArray「tagList」に、新規要素をinsertする実装はしてありますか?
その他の回答 (3)
- m0a13
- ベストアンサー率47% (9/19)
他に方法もありますがUITableViewのreloadDataでも行追加の表示更新は出来ます。 出来ないのであれば ・UITableViewのUITableViewDataSource実装内の、tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:に追加したデータが反映されていない ・reloadDataをメインスレッドで行っていない などの原因が考えられます。
お礼
回答ありがとうございます!
補足
>・UITableViewのUITableViewDataSource実装内の、tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:に追加したデータが反映されていない おそらくこれが原因と思われます。 [self.tableView reloadData];をすれば、これらのメソッドを再度読み込んでテーブルのビューを更新するのかと思っていましたが、違うのでしょうか・・・ これらのメソッドをボタンをタップした時のActionメソッドに組み込む方法はあるのでしょうか? でも、あまりこのメソッドを繰り返し使うと、テーブルの表示がどんどん重なってメモリ不足の原因になりそうな気もします。
- harawo
- ベストアンサー率58% (3742/6450)
No.1の追加です。 ためしに、reloadDataメソッドを使ってみましたが、ただアニメーション効果がないだけで、テーブルの行追加が反映されて表示されました。 これ以上は、あなたが書いたじっさいのプログラムコードを見せていただかないと、なんとも回答はできないでしょう。
お礼
回答ありがとうございます! 補足に実際のプログラムを記述しますので、少しお時間をください。
補足
■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)
テーブルの行を増減するプログラムの場合、教科書的な手法なら、reloadDataメソッドを呼ぶことはないんですけど、どういうプログラムを作っていらっしゃるんですか? いちどApple提供のプログラミングガイドを一読なさってはいかがですか?Table Viewのガイドももちろんありますから、それで教科書的な手法を理解したうえで、自分流のプログラムをお考えになってはいかがですか?
お礼
回答ありがとうございます。 不十分な説明で申し訳ありません 追加回答の補足にコードの詳細を書きましたので、そちらをご覧いただきたいと思います。
お礼
回答ありがとうございます。 返事遅くなって申し訳ありません>< 多忙でプログラムを触る時間がありませんでした。 これから見返し明日までに補足しますので、もし良かったら引き続きよろしくお願いしますm()m
補足
回答ありがとうございます! セルを追加するボタンに実装したメソッドはIBActionのtagCreateメソッドです。 allAllALLメソッドが、NSMutableArray「tagList」に、新規要素をinsertする実装となっております。 [self.tableView reloadData];でテーブルのビューが更新されるとの事で、 viewWillAppearが読み込まれるものだと思っていたのですが、そうでは無かったようですね。 そうなると、[self.tableView reloadData];というのが、どういう処理をしているのかイマイチ分かりません。 更新といっても何を更新しているのか・・・ これに関しては新しく質問を建てようと思いますが、 質問の問題に関しては、tagCreateメソッドの最後にallAllALLメソッドの処理を組み込む事で、ボタンを押すと同時に新しい項目が表示させる事ができました! 感謝です!