我真的在失去了言語:爲什麼我的UIButton的選定屬性設置不正確?
DDLogVerbose(@"%@", ([SO2Settings settings].drawMode & SO2DrawModeEraser) ? @"YES" : @"NO");
kMenu.eraserButton.selected = ([SO2Settings settings].drawMode & SO2DrawModeEraser);
DDLogVerbose(@"%@", kMenu.eraserButton);
DDLogVerbose(@"%@", kMenu.eraserButton.selected ? @"YES" : @"NO");
產生這樣的輸出
放牧2012-08-05 16:21:05.391 |是
Verbose 2012-08-05 16:21:05.391 | < UIButton:0x6cfa380; frame =(187 10; 59 59); opaque = NO; tag = 3;層= < CALayer:0x6c37cc0 >>
Verbose 2012-08-05 16:21:05.391 | NO
顯然,selected
值應是YES
,但它是NO
...這到底是怎麼回事呢?
WEIRD UPDATE:以下代碼產生一個非常令人不安的結果:當選擇
UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];
btn.selected = 8;
btn.enabled = 8;
NSLog(@"Button is selected : %@, Button is enabled : %@", btn.selected ? @"YES" : @"NO", btn.enabled ? @"YES" : @"NO");
按鈕:NO,按鈕被使能:YES
LAST UPDATE:忘記關於C標準的事情,因爲BOOL
實際上是signed char
。不過,我想我知道啓用作品的原因,但選擇不了。在標題中,看起來UIControl
使用具有諸如selected
(這是1位字段)的區域。如果它是一個奇數,它可以正常工作,但偶數不會。所以插入時必須爲爲0或1。 enabled
是一個實際的BOOL
屬性,可能存儲爲signed char
而不是1位字段。
有趣的相關閱讀:[BOOL的尖角](http://weblog.bignerdranch.com/564-bools-sharp-corners/),在BNR博客。 – 2012-08-05 18:06:38
@JoshCaswell謝謝,我已經找到了我的路!它很有意思。 – borrrden 2012-08-05 18:07:11