我這樣做是爲了改變按鈕的狀態。這是一個書籤樣式按鈕。如果用戶想爲詳細視圖添加書籤,他可以點擊一個明星。我想在根視圖中找回信息。如何使用NSUserDefaults從detailview返回到tableview的按鈕狀態
這裏是我的detailview.m
- (IBAction)saveRow
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *save = cellNumber;
if ([buttonSave.titleLabel.text isEqualToString:@"Sync off"]) {
[prefs setValue:@"YES" forKey:save];
[buttonSave setTitle:@"Sync on" forState:UIControlStateNormal];
[buttonSave setBackgroundImage:[UIImage imageNamed:@"clicked.png"] forState:UIControlStateNormal];
}
else {
[prefs setValue:@"NO" forKey:save];
[buttonSave setTitle:@"Sync off" forState:UIControlStateNormal];
[buttonSave setBackgroundImage:[UIImage imageNamed:@"notclicked.gif"] forState:UIControlStateNormal];
}
// save
[prefs synchronize];
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
if ([[NSUserDefaults standardUserDefaults] boolForKey:cellNumber])
{
[buttonSave setTitle:@"Sync on" forState:UIControlStateNormal];
[buttonSave setBackgroundImage:[UIImage imageNamed:@"clicked.png"] forState:UIControlStateNormal];
}
else {
[buttonSave setTitle:@"Sync off" forState:UIControlStateNormal];
[buttonSave setBackgroundImage:[UIImage imageNamed:@"notclicked.gif"] forState:UIControlStateNormal];
}
代碼,但在rootview,我不知道該怎麼做才能做同樣的事情。 rootview是一個tableview。
任何想法?
哇,好的..非常感謝你的回答和很好的解釋。我想我需要1周的時間來學習所有這些新的表達。所以我必須將一個協議放在我的detailView中,並在我的根視圖中使用init方法?所以代表是關鍵.. – hhd59 2012-08-04 23:20:14
關鍵是管理你的模型中的這種狀態,通常它是不夠的告訴你的RootViewController有關的變化(你的情況「現在是書籤」),所以它可以更新UI。你需要更新你的模型,然後你的模型應該用委託或通知來更新RootViewController。如果你想要我的建議,花點時間學習這些重要的模式,然後回過頭來寫下你的代碼,那將會更加簡單... – Eyal 2012-08-04 23:37:59
我會按照你的建議,這似乎太重要,不理解它!謝謝! – hhd59 2012-08-04 23:46:45