2012-03-31 51 views
0

我有一個NSPopUpButton,但在第一次啓動時沒有正確設置第一個值。我設置了awakeFromNib,但NSPopUpMenu是空的。只有第二次和下一次它正常工作。 在此先感謝。設置NSPopUpButton在第一次啓動

-(IBAction)chancepesoalert:(id)sender{ 

int selection = [(NSPopUpButton *)sender indexOfSelectedItem]; 
NSNumber *valore = [NSNumber numberWithUnsignedLongLong:(30*1000*1000)]; 


if (selection == 0) { 
    valore = [NSNumber numberWithUnsignedLongLong:(30*1000*1000)]; 
    NSLog(@"Selezionato 0"); 
} 

if (selection == 1){ 

    valore = [NSNumber numberWithUnsignedLongLong:(50*1000*1000)]; 
    NSLog(@"Selezionato 1"); 
} 
if (selection == 2){ 

    valore = [NSNumber numberWithUnsignedLongLong:(75*1000*1000)]; 
    NSLog(@"Selezionato 2"); 
} 
if (selection == 3){ 

    valore = [NSNumber numberWithUnsignedLongLong:(100*1000*1000)]; 
    NSLog(@"Selezionato 3"); 
} 



NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:valore forKey:@"SetPesoAlert"]; 
[userDefaults synchronize]; 

} 


-(void)awakeFromNib { 

unsigned long long value = [[[NSUserDefaults standardUserDefaults] objectForKey:@"SetPesoAlert"] unsignedLongValue]; 

int index; 
if (value == (30*1000*1000)) { 
    index =0; 
} 
if(value == (50*1000*1000)) { 
    index =1; 
} 
if(value == (75*1000*1000)) { 
    index =2; 
} 
if(value == (100*1000*1000)) { 
    index =3; 
} 

[pesoalert selectItemAtIndex:index]; 

} 
+0

我不明白你在問什麼。當你第一次啓動應用程序時,你想在彈出窗口中看到什麼?你如何將菜單項放在彈出式菜單中? – rdelmar 2012-03-31 16:45:49

+0

我想默認索引= 0應用程序的第一次啓動,第二次和下一個用戶選擇什麼。 現在它選擇索引= 0,但不能正常工作。 – Joannes 2012-04-01 15:09:35

回答

1

我聽起來像你需要使用registerDefaults(你可能不需要然而,要做到這一點,因爲操作系統會選擇默認值和0的指數是什麼會挑我認爲)。這允許您在首次運行應用程序時設置默認值,但如果用戶更改了默認值,那麼在下次運行應用程序時將使用該新默認值(但您需要在啓動時閱讀這些默認值 - - 我在發佈的代碼中看不到任何默認設置)。

然而,有一種更簡單的方法來使用綁定來實現這一點。當我彈出窗口時,我使用一個數組將值提供給彈出式菜單。在IB中,我刪除默認獲得的菜單項,然後將彈出窗口的內容綁定綁定到例如App Delegate.data(數據是我的數組的名稱)。然後,我將所選索引綁定到共享用戶默認值控制器,並使用模型密鑰路徑(無論您稱之爲什麼,這是控制器使用的名稱,它不是代碼中的屬性)。當你第一次啓動應用程序時,它默認爲index = 0,所以你會得到你的列表中的第一個項目,並且用戶做出的任何更改都會在下一次啓動時被記住。