![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Xcodeを用いてObjectiveCでiPhoneアプリの開発の勉強をしています。
TableViewControllerにて、ボタンを押した時にセルを追加する処理を組みたいのですが、うまくいきません。
NavigationBarに設置したボタンを押した時に、セルに表示するデータを追加する事は出来ているのですが
ボタンのactionメソッドの処理の最後に
[self.tableView reloadData];
と記述しているにも関わらず、テーブルの表示が更新されず、追加したデータが表示されません。
一度Viewを移動し再度そのテーブルを表示すると、追加したデータがテーブルに表示されます。
[self.tableView reloadData];の直下に置いたNSLogは表示されるので、どこかでプログラムが止まっているという訳でも無さそうです。
ボタンを押したらすぐにデータが追加され、テーブルに表示されるようにしたいです。
他に何かテーブルを更新する方法があるのでしょうか?
No.4ベストアンサー
- 回答日時:
それで、セルを追加するボタンに実装したメソッドは、どれですか?そして、そのメソッドには、NSMutableArray「tagLis
t」に、新規要素をinsertする実装はしてありますか?この回答への補足
回答ありがとうございます!
セルを追加するボタンに実装したメソッドはIBActionのtagCreateメソッドです。
allAllALLメソッドが、NSMutableArray「tagList」に、新規要素をinsertする実装となっております。
[self.tableView reloadData];でテーブルのビューが更新されるとの事で、
viewWillAppearが読み込まれるものだと思っていたのですが、そうでは無かったようですね。
そうなると、[self.tableView reloadData];というのが、どういう処理をしているのかイマイチ分かりません。 更新といっても何を更新しているのか・・・
これに関しては新しく質問を建てようと思いますが、
質問の問題に関しては、tagCreateメソッドの最後にallAllALLメソッドの処理を組み込む事で、ボタンを押すと同時に新しい項目が表示させる事ができました!
感謝です!
回答ありがとうございます。
返事遅くなって申し訳ありません><
多忙でプログラムを触る時間がありませんでした。
これから見返し明日までに補足しますので、もし良かったら引き続きよろしくお願いしますm()m
No.3
- 回答日時:
他に方法もありますがUITableViewのreloadDataでも行追加の表示更新は出来ます。
出来ないのであれば
・UITableViewのUITableViewDataSource実装内の、tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:に追加したデータが反映されていない
・reloadDataをメインスレッドで行っていない
などの原因が考えられます。
この回答への補足
>・UITableViewのUITableViewDataSource実装内の、tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:に追加したデータが反映されていない
おそらくこれが原因と思われます。
[self.tableView reloadData];をすれば、これらのメソッドを再度読み込んでテーブルのビューを更新するのかと思っていましたが、違うのでしょうか・・・
これらのメソッドをボタンをタップした時のActionメソッドに組み込む方法はあるのでしょうか?
でも、あまりこのメソッドを繰り返し使うと、テーブルの表示がどんどん重なってメモリ不足の原因になりそうな気もします。
No.2
- 回答日時:
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からデータを読みとり、そのデータをテーブルに表示し、
追加ボタンを押すことで新たなデータを追加する事はできているのですが
ビューの移動をしないと画面上が更新されません。
データが追加されると同時に、ビューを更新したいと思っています。
アドバイスお願いします。
No.1
- 回答日時:
テーブルの行を増減するプログラムの場合、教科書的な手法なら、reloadDataメソッドを呼ぶことはないんですけど、どういうプログラムを作っていらっしゃるんですか?
いちどApple提供のプログラミングガイドを一読なさってはいかがですか?Table Viewのガイドももちろんありますから、それで教科書的な手法を理解したうえで、自分流のプログラムをお考えになってはいかがですか?
回答ありがとうございます。
不十分な説明で申し訳ありません
追加回答の補足にコードの詳細を書きましたので、そちらをご覧いただきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
GUI画面でsetBounds()で作成し...
-
VBでCPUの使用率を取得できます...
-
tableView reloadDataが出来ない
-
VB スプレッドシート
-
変数名の付け方
-
エクセルVBAで、条件に一致する...
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
パワーポイントのVBAでテキスト...
-
「インスタンス」の意味をわか...
-
mainメソッドのthrows節で設定...
-
複数の変数を宣言する時、同時...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBA 画像を貼り付ける...
-
3年間同じクラスになる確率
-
説明文書でのメソッド・変数の...
-
tryの終了
-
Java初級 引数に適用できません
-
生成したインスタンスを削除す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
requestFocusについて
-
VB.NETでMSComm が追加できず?
-
ファイル保存先のダイアログが...
-
JScrollPane上のJTableの再描画
-
フレーム上のコンポーネントの...
-
Visual Basic 2010を使ってRS-2...
-
C#で設定時刻到来時にイベント...
-
VB6のツールボックスへのコンポ...
-
C++Builder でPanel上にフォー...
-
java 電卓 平方根
-
java gui のイベント処理が重い
-
ツールボックスのような折りたたみ
-
同じコンポーネントを複数の場...
-
[delphi] 変数を利用してコンポ...
-
C++ Builder でVisibleとshow
-
コンポーネント
-
VBSでCDトレイのオープン/ク...
-
パネルのフォーカス移動
-
JButton配列でのイベント処理
おすすめ情報