0

我有一个 UIViewController,我可以在应用程序的不同位置访问它,第一个来自仪表板,第二个来自 TabBar。这个 UIViewController 让用户可以搜索不同的数据,但我的问题是我想保留用户所做的最后一次搜索,并在用户打开 UIViewController 的任何地方显示它。我怎样才能做到这一点?

4

3 回答 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 回答