2011-12-01 47 views
0

我用下面的代碼(categorie)來改變它不起作用的BU。如何更改UISwitch的文本iOS 5?

代碼:(從iphone cookbook章8-8原碼)

#import "UISwitch+Extended.h" 

@interface UISwitch (extended) 
- (void) setAlternateColors:(BOOL) boolean; 
@end 

@interface _UISwitchSlider : UISlider 
@end 

@implementation UISwitch (Extended) 

- (_UISwitchSlider *) slider { 
    return [[self subviews] lastObject]; 
} 
- (UIView *) textHolder { 
    return [[[self slider] subviews] objectAtIndex:1]; 
} 
- (UILabel *) leftLabel { 
    return [[[self textHolder] subviews] objectAtIndex:0]; 
} 
- (UILabel *) rightLabel { 
    return [[[self textHolder] subviews] objectAtIndex:1]; 
} 
- (void) setLeftLabelText: (NSString *) labelText { 
    [[self leftLabel] setText:labelText]; //error occurred here. 
} 
- (void) setRightLabelText: (NSString *) labelText { 
    [[self rightLabel] setText:labelText]; 
} 

任何想法,請。

+3

爲什麼依賴私人視圖層次結構是一個很好的例子是一個可怕的想法。這是一種黑客攻擊,就像大多數黑客一旦發生任何變化就會中斷一樣。 – jrturton

回答

0

此代碼通過索引訪問子視圖,它們可能在新iOS中發生更改。打印交換機的所有子視圖並找到您需要的子視圖。

+0

我確實是[[[self textHolder]子視圖] objectAtIndex:0]返回UIImageview也沒有UILabel裏面的UIView([[self textHolder]子視圖]) –

+0

也許它是更深的地方,也許他們現在使用圖像,而不是文本,您可以將它們顯示在某處以檢查該內容並根據需要進行更改。對不起,我沒有確切的解決方案。 – mifki