2012-12-02 53 views
0

我正在創建一個Iphone應用程序,並且我有一個用戶單擊一個按鈕,它會更改我提取的結果控制器中的排序。但是,在關閉我的應用程序後,它會變回原來的排序方式。我只是想知道是否有反應,當應用程序重新打開時保持該按鈕。當應用程序重新打開時,在IOS中保持按鈕被按下

- (IBAction)btnValue:(id)sender { 
self.model.frc_Work.delegate = self; 

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Value" ascending:YES]; 
self.model.frc_Work.fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 

}

回答

1

是。只需使用NSUserDefaults存儲信息:

// Set this to the correct value when the button is pressed 
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ButtonPressedKey"]; 

那麼,當你鋪設了您的按鈕:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"ButtonPressedKey"]){ 
    // Do whatever you're currently doing to keep the button pressed during runtime. 
} 

NSUserDefaults基本上是一個NSDictionary跨應用程序啓動仍然存在。它只存儲屬性列表值(NSNumber, NSString, NSData, NSArray, NSDictionary, and NSDate)和基元像BOOL s。

下面是一個例子項目展示這種使用UISwitchhttps://github.com/MaxGabriel/ButtonPersistence

+0

所以我會這樣說: - (IBAction爲)btnValue:(ID)發送{ 如果([[NSUserDefaults的standardUserDefaults] boolForKey:@ 「ButtonPressedKey」]){ self.model.frc_Work.delegate = self; NSSortDescriptor * sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@「Value」ascending:YES]; self.model.frc_Work.fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 並在viewDidLoad中添加代碼的第一部分? – Joe24

+0

反過來。代碼的第一部分出現在按下按鈕時發生的'IBAction'方法中(它不應該總是「YES」 - 如果按鈕只有兩種狀態,它們應該在它們之間翻轉)。第二部分進入'viewDidLoad'。該代碼所做的就是檢查NSUserDefaults是否保存了先前運行的應用程序中的按鈕狀態,然後將其設置爲正確的狀態。 – MaxGabriel

+0

@ Joe24我向github添加了一個示例項目,演示瞭如何使用'UISwitch'來完成它。 – MaxGabriel

相關問題