我有一个 UIViewController,我可以在应用程序的不同位置访问它,第一个来自仪表板,第二个来自 TabBar。这个 UIViewController 让用户可以搜索不同的数据,但我的问题是我想保留用户所做的最后一次搜索,并在用户打开 UIViewController 的任何地方显示它。我怎样才能做到这一点?
问问题
93 次
3 回答
0
一种选择是将最后一次搜索存储在某个全局对象中,该对象可以从任一位置访问。我可能会建议使用管理您上次搜索的单例对象。该对象可以在应用启动时创建,并在您的 UIViewController 需要时用于检索最后一次搜索。
于 2012-10-13T18:59:58.177 回答
0
每次用户打开它时,您都应该始终创建一个新的 UIViewController,而不是使用来自单例(如 AppDelegate)的强引用来保留它。
然后,您可以像 TMilligan 在这篇文章中所做的那样创建一个单例实例,并将其传递给每次新的 UIViewController。
这种方式是照顾您的内存管理的最佳方式。
于 2012-10-13T20:11:27.070 回答
0
您可以创建一个单例类,例如:
应用存储.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 更改为上面示例中您想要的任何内容。
于 2012-10-13T19:29:49.773 回答