iPhoneのテーブルビューが追加行のセルを作成しません。
質問
私は、タスクを含むSQLiteのDBを持っています。各タスクは、日付を持っており、日付ごとに複数のタスクが存在することができます。
私のアプリは唯一の可変辞書に1ヶ月分のデータをロードします。各辞書項目のキーは、月(1、2、3 ... 31)の一日の文字列です。対応する値は、その日付のタスクの配列です。このように、月のそれぞれの日のために、0以上のタスクの配列があります。
可変辞書は、ルートのViewControllerで宣言されています。 Interface BuilderでのルートのViewControllerは、テーブルビューのデータソースとデリゲートです。どういうわけか、このアプリは、ルートのViewControllerは可変辞書からデータを取得することを知っています。私はこれを指定していないので、私は、複数の辞書、または多分辞書や可変配列があった場合はどうなるのだろうか?それにもかかわらず、これは追加の配線なしで動作します。ルートのViewControllerは、テーブルにデータをロードするとき、各セクションヘッダは、テキストとして日付を保持し、下の個々のセル内のすべてのタスクを一覧表示します。いくつかのヘッダーには、細胞を持っていません。
さて、タスクを変更するために、私は「エントリ」のViewControllerを持っています。テーブル内のタスクを選択すると、私はタイトル、日付、詳細を変更、または行わとしてそれをマークしてテキストフィールドの中にそのタスク情報をロードするために、エントリのViewControllerの原因となります。編集後は、エントリーのViewControllerは、ルート(テーブル)のViewControllerリロードをアンロードし、ビューののtableViewはreloadDataを呼び出して、変更が明らかである。
ここで問題です:私はナビゲーションコントローラ上の+ボタンをクリックして、新しいタスクを追加する場合、それは私がデータを設定し、同じエントリのViewController、に私を取ります。私は、既存のデータを編集するときと同じ方法を経由して、ルートのViewControllerに戻ります。まだ新しいセルが新しいデータ用に作成されていません!私は閉じてアプリを再度開く場合は、新しいデータが正しく表示されます。
データの更新や挿入が辞書の配列からDBに書かれているので、アプリを閉じたときに、これは新しいアイテムが本当にアレイの1つに追加されたことを意味します。
概要:既存のアレイ項目を編集し、テーブルはそのデータを再ロードするときに、新しいデータが表示されます。配列項目を追加し、それはときに、テーブルのリロードを無視されます。
何が問題なのですか?
解決
あなたはあなたのUITableViewControllerにこのような行を追加します。
[self.tableView reloadData];
この全体のUITableViewが再ロードされるようになります。しかし、私は好ましい方法であると信じています:
[self.tableView insertRowsAtIndexPaths: indexPaths withRowAnimation: YES];
このために仕事に、あなたは行(複数可)(NSIndexPathsの配列)が表示される場所を知っている必要があります。
これは、「エントリ」のViewController内からのUITableViewControllerを更新する方が簡単かもしれません。