アプリのさまざまな場所にアクセスできる UIViewController があります。最初のものはダッシュボードから、2 つ目は TabBar からのものです。このUIViewControllerにより、ユーザーはさまざまなデータを検索できますが、私の問題は、ユーザーが行った最後の検索を保持し、ユーザーがUIViewControllerを開いた場所に表示したいことです。どうやってやるの?
3 に答える
ユーザーが開くたびに常に新しい UIViewController を作成し、AppDelegate などのシングルトンからの強力な参照でそれを保持しないでください。
次に、TMilligan がこの投稿で行ったようにシングルトン インスタンスを作成し、それを毎回新しい UIViewController に渡すことができます。
その方法は、メモリ管理を行うのに最適です。
1 つのオプションは、どちらからでもアクセスできるグローバル オブジェクトに最後の検索を保存することです。最後の検索を管理するシングルトン オブジェクトを使用することをお勧めします。このオブジェクトは、アプリの起動時に作成でき、UIViewController が必要なときにいつでも最後の検索を取得するために使用できます。
次のようなシングルトン クラスを作成できます。
AppStorage.h
@interface AppStorage : NSObject
@property (strong, monatomic) NSString *lastSearch;
+(AppStorage *)sharedAppStorage;
@end
AppStorage.m
....
@synthesize lastSearch;
-(id)init{
self = [super init];
if(self)
{
//load last search from a saved file
}
}
+(AppStorage *)sharedAppStorage{
static AppStorage *sharedAppStorage = nil;
if(!sharedAppStorage){
sharedAppStorage = [[super allocWithZone:nil]init];
}
return sharedAppStorage;
}
....
その後、次を使用して、アプリ内のどこからでも保存された検索にアクセスできます。
NSString *savedSearch = [[AppStorage sharedAppStorage] lastSearch];
保存した検索をアプリの終了後も保持する場合は、検索を NSUserDefaults に保存するか、CoreData を使用する必要があります。それらは十分に文書化されています。
注: 検索をどのように保存したいのかわかりません。そのため、上記の例で NSString を好きなように変更できます。