2012-10-13 29 views
0

我有一個UIViewController,我可以在應用程序的不同位置訪問它,第一個來自儀表板,第二個來自TabBar。這UIViewController讓用戶搜索不同的數據,但我的問題是我想保留用戶做的最後一次搜索,並顯示它,無論用戶打開UIViewController。我怎樣才能做到這一點?如何將數據保存在UIViewController的不同實例中?

+1

http://whathaveyoutried.com/ –

回答

0

一種選擇是將最後的搜索存儲在某個全局對象中,可以從任一地點訪問它。我可能會建議使用管理最後一次搜索的單例對象。該對象可以在應用程序啓動時創建,並用於在您的UIViewController需要時檢索上次搜索。

0

你可以做一個單獨的類,如:

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; 
} 

.... 

然後,您可以從任何地方訪問保存搜索在App通過使用:

NSString *savedSearch = [[AppStorage sharedAppStorage] lastSearch]; 

如果您希望通過應用程序終止保存已保存的搜索,則應將搜索保存到NSUserDefaults或使用CoreData。這些都有據可查。

注意:我不知道你是如何保存你的搜索,所以NSString可以在上面的例子中改變爲任何你想要的。

0

每次用戶打開它時都應該創建一個新的UIViewController,並且不要通過來自單例如AppDelegate的強引用來保留它。

然後你可以像TMilligan那樣在這篇文章中創建一個單例實例,並將它傳遞給每次新的UIViewController。

這種方式是最好的照顧你的內存管理。

相關問題