簡體   English   中英

iOS7 Xcode5開關狀態NSUserDefaults

[英]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。

這就是我要做的:

  • GuestTableViewController有一個Person對象的列表,Person對象有一個BOOL供選擇。
  • GuestInfoViewController讀取BOOL值以顯示該開關,如果更改該值,它將激發委托並更新GuestTableViewController中的列表。

這樣,所有內容都會更新,並且所有信息正確無誤。 如果需要幫助進行委托,則可以在Stackoverflow上找到一百萬個示例。 或問,我會詳細說明。

**編輯**

當處理一個簡單的Person對象時,您甚至不需要委托,它更簡單。 檢查附件中的項目: http : //www.brunotereso.net/temp/DelegateProject.zip (請注意,這只是我提供給您的代碼片段,向您展示如何執行。 ,請查看cellForRowAtIndexPath並使用可重復使用的單元格)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM