作为分段控件的uibutton



具有两个UIButton的分段控件,并将每个按钮的动作设置为action:@selector(segmentedControl:)

    - (IBAction)segmentedControl:(id)sender {
        BOOL activateSecond = _firstTab.selected;
        _firstTab.selected = !activateSecond;
        _secondTab.selected = activateSecond;
}

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

在我的脑海中,我认为你可以使用标签属性。

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

然后当你在你的segmentedControl方法中收到一个send时,将它强制转换为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;
    }
}

跟踪之前被选中的按钮,然后您可以通过:

捕获新按钮。
- (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
    }
}

当然,你需要初始化preprelyselecteindex。

如果这个想法对你有帮助,请告诉我。

最新更新