UISegmentedControl寄存器点击选定的段 [英] UISegmentedControl register taps on selected segment

查看:85
本文介绍了UISegmentedControl寄存器点击选定的段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个分段控件,用户可以选择如何订购列表。工作正常。

I have a segmented control where the user can select how to order a list. Works fine.

但是,我希望在点击已经选定的段时,订单会被反转。我已经准备好了所有代码,但我不知道如何在这些段上注册水龙头。似乎唯一可以使用的控制事件是UIControlEventValueChanged,但这不起作用(因为所选的段实际上没有变化)。

However, I would like that when an already selected segment is tapped, the order gets inverted. I have all the code in place, but I don't know how to register the taps on those segments. It seems the only control event you can use is UIControlEventValueChanged, but that isn't working (since the selected segment isn't actually changing).

是否有解决方案这个?如果是这样,它是什么?

Is there a solution for this? And if so, what is it?

提前致谢!

推荐答案

你可以继承UISegmentedControl,然后覆盖setSelectedSegmentIndex:

You can subclass UISegmentedControl, and then override setSelectedSegmentIndex:

- (void) setSelectedSegmentIndex:(NSInteger)toValue {
    if (self.selectedSegmentIndex == toValue) {
        [super setSelectedSegmentIndex:UISegmentedControlNoSegment];
    } else {
        [super setSelectedSegmentIndex:toValue];        
    }
}

如果使用IB,请确保设置类您的UISegmentedControl到您的子类。

If using IB, make sure you set the class of your UISegmentedControl to your subclass.

现在您可以像平常一样监听相同的UIControlEventValueChanged,除非用户取消选择该段,您将看到selectedSegmentIndex等于UISegmentedControlNoSegment :

Now you can listen for the same UIControlEventValueChanged as you would normally, except if the user deselected the segment, you will see a selectedSegmentIndex equal to UISegmentedControlNoSegment:

-(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]);
}}

这篇关于UISegmentedControl寄存器点击选定的段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆