2013-01-10 46 views
3

我有一個單調乏味的小問題。以%i的形式獲取UISwitch的值

我需要傳遞由UISwitch設置的值,因爲它是一個布爾值,我以爲它會返回一個整數,因此下面我的代碼中的%i。

我已經看了看,很多UISwitched都有自己的價值顯示,像這樣:

if(nameOfSwitch.isOn) 
{ 
    NSLog(@"The switch is on"); 
} 
else 
{ 
    NSLog(@"The switch is off"); 
} 

我需要的布爾值,因爲我需要這樣的:

NSString *value = [[NSString alloc] initWithFormat:@"Value of Switch %i" nameOfSwitch.on]; 

然而,這似乎總是返回開啓 - 那麼正確的方法是什麼?

我需要UITextField.text爲UISwitch相當於

+0

嘗試'[[NSNumber numberWithBOOL:switch.on] intValue];'smgt那樣 – Yaman

+1

使用'%i'(或'%d')布爾值。你應該看到'0'爲'NO','1'爲'YES'。你有什麼? – rmaddy

+0

我剛剛得到1,但是一旦我在開關關閉的情況下進行測試,它仍然在傳遞1而不是0 –

回答

10

您可以嘗試

NSString *value = [[NSString alloc] initWithFormat:@"Value of Switch: %i",nameOfSwitch.isOn]; 

NSString *value = [[NSString alloc] initWithFormat:@"Value of Switch: %@",[email protected]"YES":@"NO"]; 

順便說應該是

if(nameOfSwitch.isOn) 
{ 
    NSLog(@"The switch is on"); 
} 
else 
{ 
    NSLog(@"The switch is off"); 
} 

編輯:如果你看到這個開關爲ON,並且你沒有得到你想要的1,那麼你的問題可能是你調用了錯誤的開關名或者它不是同一個實例(你有一個Interface Builder,你也可以通過代碼初始化一個)

+0

你的第二行工作:-)我想它需要一個字符串作爲佔位符來顯示。 –

+0

第一行顯示一個開關的整數值,第二行顯示我在那裏寫的文本,具體取決於開關的值。順便說一句,當你想獲得價值時,嘗試使用isON,因爲這是正確的獲得者。 – Pochi