UIButton作为分段控件

时间:2011-11-03 14:47:54

标签: iphone uibutton custom-controls ios5 uisegmentedcontrol

使用两个UIButton进行分段控制,并为每个按钮将操作设置为action:@selector(segmentedControl:)

    - (IBAction)segmentedControl:(id)sender {

        BOOL activateSecond = _firstTab.selected;
        _firstTab.selected = !activateSecond;
        _secondTab.selected = activateSecond;
}

如果我点击活动按钮(现在活动状态跳转到另一个按钮),仍然存在的问题是如何解决。

2 个答案:

答案 0 :(得分:2)

跟踪之前选择的按钮,然后您可以通过以下方式捕获新按钮:

- (IBAction)segmentedControl:(id)sender {
    UISegmentedControl * myControl = (UISegmentedControl *) sender;

    if(myControl.selectedSegmentIndex != previouslySelectedIndex)
    {
        // here the user has selected a new button, which becomes the active one
        previouslySelectedIndex = myControl.selectedSegmentIndex;
    } else {
        // the user tapped on the active, previously selected button
    }
}

当然,您需要初始化previousSelectedIndex以开始。

如果这个想法可以帮助你,请告诉我。

答案 1 :(得分:2)

我认为你可以使用标签属性。

将每个按钮的标签设置为数字。

然后,当您在segmentedControl方法中收到一个发送时,将其转换为UIButton并检查它的标记值。

- (IBAction)segmentedControl:(id)sender {

    int buttonTag = ((UIButton*)sender).tag;

    if(_firstTab.selected && buttonTag != 1){
       _firstTab.selected = NO;
       _secondTab.selected = YES;
    }else if(_secondTab.selected && buttonTag != 2){
       _firstTab.selected = YES;
       _secondTab.selected = NO;
    }
}