[英]iOS7 Xcode5 switch state NSUserDefaults
我是iOS的新手,所以這是我的問題。 我有一個表視圖(GuestTableViewController)列出了聚會中的一些客人。 單擊某個人時,將顯示一個新視圖(GuestInfoViewController),其中包含有關此與會者的一些信息。 在此視圖中,我具有開關按鈕,因此,如果我有3個人,將有3個開關指示每個按鈕都來了。
我在GuestInfoViewController的IBAction中使用NSUserDefaults已實現在視圖之間保存其狀態(ON / OFF)。
問題是,當我單擊一個開關時,所有開關都會更改狀態。 如何引用每個開關。
注意:如果需要,我可以將圖像發布到情節提要上,甚至可以添加一些代碼。
非常感謝你!
@implementation GuestInfoViewController
@synthesize nom,cognoms,foto;
@synthesize setNom,setCognoms,setFoto;
@synthesize mySwitch;
- (void)viewDidLoad
{
[super viewDidLoad];
nom.text = setNom;
cognoms.text = setCognoms;
[foto setImage:[UIImage imageNamed:setFoto]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"SwitchState"])
self.mySwitch.on = [defaults boolForKey:@"SwitchState"];
}
- (IBAction)switch:(id)sender {
if(mySwitch.on){
NSLog(@"Switch is ON");
}
if(!mySwitch.on){
NSLog(@"Switch is OFF");
}
}
- (IBAction)saveSwitchState:(id)sender
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([self.mySwitch isOn])
[defaults setBool:YES forKey:@"SwitchState"];
else
[defaults setBool:NO forKey:@"SwitchState"];
}
@end
您的代碼對所有與會者都使用相同的密鑰-這是您應該注意的。
由於您顯然為每個人設置了姓名和姓氏(並且如果我們假設兩個與會人員沒有相同的姓名),則可以使用它來發揮自己的優勢。
更改所有@"SwitchState"
引用
像
[NSString stringWithFormat:@"SwitchState_%@_%@",setNom,setCognoms]
這將有效地分別保存每個與會者的開關狀態。
使用您的思路,您需要在NSUserDefaults中存儲3個密鑰,每個人一個。 例如,如果您有1000個人,則使用它會很混亂。
我相信實現此目標的正確方法是在GuestInfoViewController上使用Delegate。
這就是我要做的:
這樣,所有內容都會更新,並且所有信息正確無誤。 如果需要幫助進行委托,則可以在Stackoverflow上找到一百萬個示例。 或問,我會詳細說明。
**編輯**
當處理一個簡單的Person對象時,您甚至不需要委托,它更簡單。 檢查附件中的項目: http : //www.brunotereso.net/temp/DelegateProject.zip (請注意,這只是我提供給您的代碼片段,向您展示如何執行。 ,請查看cellForRowAtIndexPath並使用可重復使用的單元格)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.