【发布时间】:2011-12-01 11:56:19
【问题描述】:
我使用下面的代码(类别)来更改它不起作用的BU。
代码:(原代码取自iphone cookbook第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];
}
请有什么想法。
【问题讨论】:
-
为什么依赖私有视图层次结构是一个糟糕的想法的一个典型例子。这是一种 hack,与大多数 hack 一样,一旦发生任何变化,它就会崩溃。
标签: iphone objective-c xcode custom-controls uiswitch