質問

私は、タスクを含む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を更新する方が簡単かもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top