起動時に前回終了時の画面の状態を覚えたまま起動するには、どのようにすればいいのでしょうか

42 views
Skip to first unread message

Munehiro O

unread,
Feb 27, 2009, 12:24:34 AM2/27/09
to iphone-deve...@googlegroups.com
㈱イーフロンティアの越智と申します。お世話になります。

アプリがアクティブでなくなる場合として、ホームボタンによる終了、電話がかかってきた場合などが考えられますが、このときに画面の状態を保存し、復帰したときにその状態を再現させたいと思っております。
App Storeや駅探エクスプレスはよくできていて、起動時に前回終了時の画面を見事に再現してくれます。
動きを見ていると、再現に必要な情報だけを記憶していて、あとはその場で処理しているといった感じです。ということは、アプリによって記憶しておくデータも異なるということになります。
自分のアプリの場合は、UINavigationControllerとUITabBarControllerがあってxmlをその場で解析して、UITableViewに表示するようなアプリです。
これらの情報を保存して、復帰時に再現するようなサンプルコードがしりたいのですが、どなたかご教授いただけないでしょうか?

宜しくお願いします。

KISHIKAWA Katsumi

unread,
Mar 1, 2009, 10:03:25 AM3/1/09
to iphone-deve...@googlegroups.com
越智さん

岸川です。
公式のサンプルにある、DrillDownSaveが、
状態の保存、復元のサンプルです。


岸川克己
kishikaw...@mac.com
kishikaw...@gmail.com
http://d.hatena.ne.jp/KishikawaKatsumi/




2009/2/27 Munehiro O <mune...@gmail.com>:

munehiro

unread,
Mar 4, 2009, 3:42:04 AM3/4/09
to iPhone Developer Japan
岸川さん

ありがとうございます。越智です。
現在の画面を特定するために画面のUIViewControllerを保存しておこうと思い、とりあえずNSUserDefaultsの初期値に以下の
ような値を持たせようとしました。

// SearchViewControllerはUIViewControllerのサブクラス
SearchViewController *controller = [[SearchViewController alloc]
initWithNibName:@"SearchView" bundle:nil];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *array = [NSArray arrayWithObject:[NSDictionary
dictionaryWithObject:controller forKey:@"viewContoroller"]];
NSDictionary *dict = [NSDictionary dictionaryWithObject:array
forKey:@"lastViewController"];
[defaults registerDefaults:dict];

registerDefaults のところで、EXC_BAD_ACCESS となり先に進めませんでした。
NSUserDefaults にUIViewControllerの値は保持できないのでしょうか?

On 3月2日, 午前12:03, KISHIKAWA Katsumi <kishikawakats...@gmail.com>
wrote:
> 越智さん
>
> 岸川です。
> 公式のサンプルにある、DrillDownSaveが、
> 状態の保存、復元のサンプルです。
>
> 岸川克己
> kishikawakats...@mac.com
> kishikawakats...@gmail.comhttp://d.hatena.ne.jp/KishikawaKatsumi/
>
> 2009/2/27 Munehiro O <mune.o...@gmail.com>:

munehiro

unread,
Mar 8, 2009, 9:50:17 PM3/8/09
to iPhone Developer Japan
越智です。

保存しておきたいのは、UIViewController を作成しているクラス名ですね。
これなら NSStrinng で保存すればいいですね。
Reply all
Reply to author
Forward
0 new messages