2011-01-25 34 views
2

感謝您的幫助。NSUserDefaults,三個選項的一個首選項

我很困難,首選項有三個選項通過複選框。更具體地說,控制偏好的三個複選框的布爾狀態之間的關係。我很樂意設置單個複選框首選項,並且這三個選項版本中的各個首選項設置都可以工作。不過,我似乎無法讓複選框一致地交互。所以一,二關等

這是我的代碼。完成這件事的最好方法是什麼?

謝謝。

保羅

- (BOOL)displayBankOne 


{ 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
return [defaults boolForKey:PREFdisplayBankOne]; 

} 

- (IBAction)bankOne:(id)sender 

{ 


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setBool:displayBankOne forKey:PREFdisplayBankOne]; 

[defaults setBool:displayBankOne forKey:PREFdisplayBankOne]; 
[defaults setBool:displayBankTwo forKey:PREFdisplayBankTwo]; 
[defaults setBool:displayBankThree forKey:PREFdisplayBankThree]; 

[bankOneFlag setState:NSOnState]; 

[bankTwoFlag setState:NSOffState]; 
[bankThreeFlag setState:NSOffState]; 

}

回答

1

如果我理解你的權利,你可以嘗試使用無線電集團(NSMatrix)。而不是3個單獨的複選框。並使用IB中的綁定將它們的值選擇綁定到共享的用戶默認值。

在IB中綁定(矩陣綁定)只需勾選綁定到:共享用戶默認值控制器。 然後在模型關鍵路徑中給予pref條目一個名稱。

給你一個想法:我 你甚至可以綁定其他對象到相同的模型關鍵路徑名稱。即 您可以在IB中添加一個標籤(NSTextField),並將其值綁定到共享的用戶默認值控制器。並將其型號關鍵路徑改爲與您在型號關鍵路徑中給出的無線組的名稱相同的名稱。

運行時,標籤將顯示哪個單選按鈕所在的索引號。

+0

謝謝分配。這真的很好。很多appeciated。 – Paul

+0

沒有問題,你能接受答案:-) – markhunte