如何更改UISwitch的文本iOS 5?

如何更改UISwitch的文本iOS 5?

问题描述:

我用下面的代码(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

此代码通过索引访问子视图,它们可能在新iOS中发生更改。打印交换机的所有子视图并找到您需要的子视图。

+0

我确实是[[[self textHolder]子视图] objectAtIndex:0]返回UIImageview也没有UILabel里面的UIView([[self textHolder]子视图]) –

+0

也许它是更深的地方,也许他们现在使用图像,而不是文本,您可以将它们显示在某处以检查该内容并根据需要进行更改。对不起,我没有确切的解决方案。 – mifki