我在自定义UIView
中创建了一个细分控件,现在我需要在细分控制发生变化时更改UIView's
颜色。
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor clearColor];
self.circleColor = [UIColor lightGrayColor];
self.segmentControl = [[UISegmentedControl alloc] initWithItems: @[@"Red", @"Green", @"Blue"]];
CGRect f = self.segmentControl.frame;
f.origin = CGPointMake(0, [UIApplication sharedApplication].statusBarFrame.size.height);
self.segmentControl.frame = f;
[self addSubview:self.segmentControl];
}
return self;
}
我认为有类似self.segmentControl setCallbackForEvent:(UIEvent*)event:(Callback)action
的内容,但我无法在UIView
找到这样的方法。
所以我尝试了下面的代码,但是也不行:
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
NSSet<UITouch*>* segTouches = [event touchesForView:self.segmentControl];
if (segTouches.count != 0 && self.segmentControl.selected) {
UIColor* color = nil;
switch (self.segmentControl.selectedSegmentIndex) {
case 0:
color = [UIColor redColor];
break;
case 1:
color = [UIColor greenColor];
break;
case 2:
color = [UIColor blueColor];
break;
default:
assert(0);
break;
}
self.circleColor = color;
}
}
如果没有ios中的界面构建器,我怎样才能逐步将信号(段控制值已更改)连接到插槽(更改为视图颜色)?
答案 0 :(得分:1)
来自Apple Docs的分段控件
使用UIControlEventValueChanged常量为分段控件注册目标操作方法,如下所示。
[segmentedControl addTarget:self
action:@selector(changeColor:)
forControlEvents:UIControlEventValueChanged];
然后,您可以创建一个changeColor:函数并将颜色更改代码放在那里。
答案 1 :(得分:1)
您可以在doc上了解如何使用UISegmentedControl
。