我真的在失去了言语:为什么我的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