[quote="TEAS TEA"メソッドが上手く拾ってくれません。[/quote]
delegateを接続していないとか?
でも、戻る時に処理するなら viewWillDisappearの方が適切ではないですか?
TEAS TEA さんが書きました:原理はわかったのですが設計が出来ないんです
では、とりあえずソースから NSUserDefaultsを使った処理を全部削除した上で
アプリを終了したらデータを忘れてしまっても構わないので、それ以外の部分は
正常に動作する(各銀行のデータ管理も含めて)アプリを作って下さい。
そうですね、TopMenuControllerに複数の Itemクラスを入れる配列(NSMutableArray)でも
作って纏めて管理しましょうか。
銀行が新規追加されたり削除されたらこの配列を変更していきます。
UITableViewの表示もこの配列の銀行名を表示するようにします。
EditMenuControllerで詳細を表示するときはその中の対象の Itemクラスを EditMenuControllerに
引き渡して、Item内の情報を編集する処理をするようにしてみて下さい。
それが出来たら NSUserDefaultsの処理を入れて次回起動時にデータを復元する
処理を入れていきましょう。
当面は細かいことは考えないでデータ構造も含めてシンプルに、
起動時に読み取り、終了時・バックグラウンドになった時に書き込みを
処理するようにしましょう。
まずは書き込みから。
これは UIApplicationDelegateの OS4.0以降なら applicationDidEnterBackground、
未満なら applicationWillTerminateに記述します。
肝心な記述内容ですが
[NSUserDefaults resetStandardUserDefaults];
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
と前回の情報をリセットしてから NSUserDefaultsオブジェクトを取得します。
書き込むデータは、まず銀行の数を整数値(キーは "BankNum"とでもしておきましょう)で
NSUserDefaultsに入れた後、以下のような処理を for文で銀行の数分だけ行います。
・ 空の NSMutableDictionaryを用意して、詳細な各銀行の情報を Itemクラスから
NSMutableDictionaryに設定していきます。
・ その NSMutableDictionaryを何番目の銀行なのかの番号(forループの回数でOK)を文字列にしたものを
キーにして NSUserDefaultsに入れます。
全ての銀行のデータを入れ追えたら、最後に synchronizeを呼び出して書き出しは終了です。
次は読み出しです。
TopMenuControllerの initに書くとしましょうか。
キー "BankNum"で数値を取り出します。この数値が 0以下なら初回起動時か1つも情報を
入力していないことになるので、ここで処理は終了です。
1以上入っているのであればその数の分だけ forで回し以下のように処理します。
・ 空の NSMutableDictionaryに forの回数をキーとして NSUserDefaultsから情報を
取り出します(nilでないことを確認)。
・ 空の Itemクラスを用意し、NSMutableDictionaryから情報を写していきます。
・ 設定した Itemを TopMenuControllerが持つ Itemの配列に追加します。
これで終わりです。
まぁ実際に組んで試しているわけではなく、机上で書いているので細かいところは
うまくいかないかもしれませんが、概ねこんなところです。
まずははやれるところまでやってみて下さい。
TEAS TEA さんが書きました:何とかサンプルを頂けないでしょうか?
NSUserDefaultsのサンプルなら検索すればいろいろ出てくると思いますけど、
AppPrefs
http://developer.apple.com/library/ios/ ... Intro.html
DrillDownSave
http://developer.apple.com/library/ios/ ... Intro.html
MoviePlayer
http://developer.apple.com/library/ios/ ... Intro.html
とかでしょうか。