dポイントプレゼントキャンペーン実施中!

Xcodeを用いてObjectiveCでiPhoneアプリの開発の勉強をしています。

TableViewControllerにて、ボタンを押した時にセルを追加する処理を組みたいのですが、うまくいきません。

NavigationBarに設置したボタンを押した時に、セルに表示するデータを追加する事は出来ているのですが
ボタンのactionメソッドの処理の最後に
[self.tableView reloadData];
と記述しているにも関わらず、テーブルの表示が更新されず、追加したデータが表示されません。
一度Viewを移動し再度そのテーブルを表示すると、追加したデータがテーブルに表示されます。

[self.tableView reloadData];の直下に置いたNSLogは表示されるので、どこかでプログラムが止まっているという訳でも無さそうです。
ボタンを押したらすぐにデータが追加され、テーブルに表示されるようにしたいです。
他に何かテーブルを更新する方法があるのでしょうか?

A 回答 (4件)

それで、セルを追加するボタンに実装したメソッドは、どれですか?そして、そのメソッドには、NSMutableArray「tagLis

t」に、新規要素をinsertする実装はしてありますか?

この回答への補足

回答ありがとうございます!
セルを追加するボタンに実装したメソッドはIBActionのtagCreateメソッドです。
allAllALLメソッドが、NSMutableArray「tagList」に、新規要素をinsertする実装となっております。

[self.tableView reloadData];でテーブルのビューが更新されるとの事で、
viewWillAppearが読み込まれるものだと思っていたのですが、そうでは無かったようですね。
そうなると、[self.tableView reloadData];というのが、どういう処理をしているのかイマイチ分かりません。 更新といっても何を更新しているのか・・・

これに関しては新しく質問を建てようと思いますが、
質問の問題に関しては、tagCreateメソッドの最後にallAllALLメソッドの処理を組み込む事で、ボタンを押すと同時に新しい項目が表示させる事ができました!
感謝です!

補足日時:2014/10/05 11:51
    • good
    • 1
この回答へのお礼

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

お礼日時:2014/10/04 21:16

他に方法もありますがUITableViewのreloadDataでも行追加の表示更新は出来ます。


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

この回答への補足

>・UITableViewのUITableViewDataSource実装内の、tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:に追加したデータが反映されていない

おそらくこれが原因と思われます。
[self.tableView reloadData];をすれば、これらのメソッドを再度読み込んでテーブルのビューを更新するのかと思っていましたが、違うのでしょうか・・・

これらのメソッドをボタンをタップした時のActionメソッドに組み込む方法はあるのでしょうか?
でも、あまりこのメソッドを繰り返し使うと、テーブルの表示がどんどん重なってメモリ不足の原因になりそうな気もします。

補足日時:2014/09/28 12:58
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/28 12:58

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 …


FMDBを使っているので、少し分かりづらいかもしれません。すみません。
FMDBからデータを読みとり、そのデータをテーブルに表示し、
追加ボタンを押すことで新たなデータを追加する事はできているのですが
ビューの移動をしないと画面上が更新されません。
データが追加されると同時に、ビューを更新したいと思っています。

アドバイスお願いします。

補足日時:2014/09/28 13:41
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/28 12:56

テーブルの行を増減するプログラムの場合、教科書的な手法なら、reloadDataメソッドを呼ぶことはないんですけど、どういうプログラムを作っていらっしゃるんですか?


いちどApple提供のプログラミングガイドを一読なさってはいかがですか?Table Viewのガイドももちろんありますから、それで教科書的な手法を理解したうえで、自分流のプログラムをお考えになってはいかがですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/28 13:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!