【问题标题】:UIButtons as segmented controlsUIButtons 作为分段控件
【发布时间】:2011-12-21 06:21:56
【问题描述】:

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

    - (IBAction)segmentedControl:(id)sender {

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

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

【问题讨论】:

    标签: iphone uibutton custom-controls ios5 uisegmentedcontrol


    【解决方案1】:

    在我的头上,我认为你可以使用标签属性。

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

    然后,当您在 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;
        }
    }
    

    【讨论】:

    • 最后一期...我有两个状态的两个背景图像forState:UIControlStateSelectedforState:UIControlStateNormal。我如何删除正常的。如果我按住活动图像背景会消失,直到我释放它...
    • 设置如下:[_firstTab setBackgroundImage:[UIImage imageNamed:@"state_normal.png"] forState:UIControlStateNormal]; [_firstTab setBackgroundImage:[UIImage imageNamed:@"state_on.png"] forState:UIControlStateSelected]; [_firstTab setBackgroundImage:[UIImage imageNamed:@"state_on.png"] forState:UIControlStateHighlighted]; [_firstTab setBackgroundImage:[UIImage imageNamed:@"state_on.png"] forState:UIControlStateDisabled];
    【解决方案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 才能开始。

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

    【讨论】:

    • like his example 但我有两个 UIButton 不是 UISegmentedControl
    • 啊,你的问题本来可以更清楚一点(我被“分段控制”这个词弄糊涂了)。一个解决方案仍然会涉及 sam 概念——您仍然可以跟踪两个单独按钮的活动按钮状态。
    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多