2010-01-03 32 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的一個錯誤。如果其他嘗試使用這種方法的人也這樣做,我認爲這不會有害。