我有一个分段控件,用户可以在其中选择如何对列表进行排序。工作正常。
但是,我希望当点击已选择的段时,顺序会颠倒。我已准备好所有代码,但我不知道如何注册这些段上的水龙头。看来您可以使用的唯一控制事件是 UIControlEventValueChanged,但这不起作用(因为所选段实际上并未更改)。
这个问题有解决办法吗?如果是的话,那是什么?
提前致谢!
最佳答案
您可以子类化UISegmentedControl
,然后覆盖setSelectedSegmentIndex:
- (void) setSelectedSegmentIndex:(NSInteger)toValue {
if (self.selectedSegmentIndex == toValue) {
[super setSelectedSegmentIndex:UISegmentedControlNoSegment];
} else {
[super setSelectedSegmentIndex:toValue];
}
}
如果使用 IB,请确保将 UISegmentedControl
的类设置为您的子类。
现在您可以像平常一样监听相同的UIControlEventValueChanged
,除非用户取消选择该段,您将看到等于UISegmentedControlNoSegment<的
:selectedSegmentIndex
/
-(IBAction) valueChanged: (id) sender {
UISegmentedControl *segmentedControl = (UISegmentedControl*) sender;
switch ([segmentedControl selectedSegmentIndex]) {
case 0:
// do something
break;
case 1:
// do something
break;
case UISegmentedControlNoSegment:
// do something
break;
default:
NSLog(@"No option for: %d", [segmentedControl selectedSegmentIndex]);
}
}
关于iphone - UISegmentedControl 寄存器点击选定的段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1620972/