2010-01-03 68 views
2

每当我执行下面的代码时,无论我为buttonWithType指定什么,总是得到按钮类型= 0。有没有人知道这种行为的解释?我试图根据他们的类型明显区分按钮,因为buttonType属性似乎被破坏(或无用),因此显然没有成功。一如既往非常感谢您提供的任何启示!iPhone的UIButton buttonType总是计算为0?

UIButton *button = [[UIButton buttonWithType:UIButtonTypeDetailDisclosure] retain]; 
button.frame = frame; 
NSLog(@"###################### LeftCalloutButtons - buttonWithTitle(73) - button type = %d",button.buttonType); 

回答

0

我遇到的情况下,当UIButton的性质(的backgroundColor在我的情况),直到按钮添加到一个视图将有假值。一旦按钮在屏幕上,请尝试查询属性。

编辑:刚刚看到了这种行为的另一个例子。这次是关于UISwitch.on。如果我在alloc/init之后将它设置为YES,它不会显示为on。如果我在viewDidLoad处理程序中将其设置为YES,它将按预期工作。

显然在UIKit中有一些延迟加载。

+1

当我按下屏幕上的按钮时,查询detaildisclosure按钮,我仍然得到0:2010-01-02 22:06:12.973 iParkNow![2405:207] ############ #### CALL OUT ACCESSORY TAPPED:控制按钮类型= 0 – ennuikiller 2010-01-03 03:07:33

0

我刚刚验证了与iOS 4.3.2和Xcode 4.0.2相同的问题。在调试器中查看UIButton实例的内部结构时,私有的struct _buttonFlags包含unsigned int buttonType,它被设置为正确的值(在我的情况下为非零)。

但是,调试器响应print (int) [control buttonType]总是报告0

总之,方法buttonType已损坏,我将此报告为Apple的一个错误。如果其他尝试使用这种方法的人也这样做,我认为这不会有害。