2011-12-30 9 views
1

からメモリからの眺め/ビューコントローラを殺します。私は私と一緒に負担してください、OBJの-Cプログラミングにかなり新しいです別のビューコントローラ

私はタブバーを持っています。 1つのタブには、SQLデータベースのデータを配列に取得するテーブルビューコントローラがあります。 別のタブには、すべてをリセットするためのボタンがあります(すべてのデータを削除します)。このタブのビューコントローラは正常にSQLデータベースを削除しますが、テーブルタブに戻ると、テーブルにはまだデータがいっぱいです。

ボタンは、この他のビューコントローラから押されたときにどのように私はメモリからテーブルビューコントローラをアンロードすることができますか?

私はメモリ警告をシミュレートする場合、表はクリアし、バックタブに行くときに再構築されます。これは私がコードでやろうとしていることです。あなたはそのUITableViewreloadDataを呼び出す必要が

おかげ

答えて

1

私はあなたがこの使用NSNotificationsを達成することができると思います。このコードを入れて、あなたの第一ビューコントローラのinitメソッドで

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(tableViewDataUpdated:) 
               name:@"DATA_UPDATED" 
               object:nil]; 

は、データを含む配列をリロードするtableViewDataUpdatedメソッドを作成し、テーブルビューにリロードを呼び出します。 SQLデータベースがクリアされますとき、第一ビューコントローラのdeallocメソッドで最後に

NSNotification *notification = [NSNotification notificationWithName:@"DATA_UPDATED" object:nil userInfo:nil]; 
    [[NSNotificationQueue defaultQueue] enqueueNotification:notification postingStyle:NSPostASAP]; 

を呼び出す第二ビューコントローラで

が含まれます:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
+0

おかげで、それは有望なようです。私はまもなくそれを試みるでしょう。 – Darren

+0

私は最初のコントローラでinitを作成しましたが、決して呼び出されません。 また、通知を呼び出すための 'userInfo'の部分を取り除かなければなりませんでした。なぜなら、宣言されていないと言われていたからです(とにかく必要とは思われません)。 – Darren

+0

私はそれが働いてくれてありがとう。 ViewWillDisappearで通知を作成し、ViewWillAppearで削除します。 リセットボタンを押すと、array = nilを設定してテーブルのデータをリロードするNotificationを呼び出します。 ありがとうございました – Darren

3

これは、ビューコントローラは、それが(場合には、それが現在表示されていない)、この警告を受けるたびに、独自のビューを再作成引き起こし、メモリ警告時にクリアされます。

+0

おかげで、私はにreloadDataを追加することができますViewDidAppear? しかし、それが動作する前に、データベースから読み込まれたテーブルのデータを格納するNSMutableArrayもリリースする必要があります。 別のViewControllerからarray = nilを呼び出すにはどうすればよいですか? – Darren

+0

私は最初、別のView Controllerで配列をクリアする方法の質問を書きました。しかし、同じ結果を達成したので、ビューをアンロードする方法に変更しました。 – Darren

+0

別のView Controllerから配列を解放する必要はありません。あなたが望むものを達成できる方法の1つは、最初のView Controllerで、viewWillAppearメソッド(viewDidAppearではなく)で配列をロードします(既にすべてのデータを削除していれば空になります)。次にreloadDataをテーブルビューで呼び出します。テーブルビューは空でなければなりません。 – Darren

関連する問題