如何使用自定义 UIButton 获得 UISegementedControl 功能?

Posted

技术标签:

【中文标题】如何使用自定义 UIButton 获得 UISegementedControl 功能?【英文标题】:How can I get UISegementedControl functionality with custom UIButtons? 【发布时间】:2014-04-24 17:40:14 【问题描述】:

我创建了我自己的自定义过滤器视图,我希望它像 UISegmentedControl 一样工作。我已将其设置为视图,然后设置了 3 个 UIButton。我想知道如何做到这一点,以便在单击一个时取消选择其他两个,并对该按钮进行 api 调用,然后重新加载其下方的 UICollectionView。

这是我的视图图片,带有 3 个按钮,希望能更好地解释我正在尝试做的事情。

【问题讨论】:

到目前为止您尝试过什么?请分享一些代码。另外,为什么不按照 HIG 使用 UISegmentedControl 我是 ios 新手,所以我问的更多是如何解决这个问题,而不是如何解决特定问题。我没有使用UISegmentedControl,因为我不知道我可以让它看起来像上图,并且认为它的设计定制是有限的。 【参考方案1】:

将所有按钮连接到此IBAction 并为每个按钮定义标签。

- (IBAction)pressButton:(id)sender 

    UIButton* button1 = (UIButton*)[self.view viewWithTag:99];
    UIButton* button2 = (UIButton*)[self.view viewWithTag:100];
    UIButton* button3 = (UIButton*)[self.view viewWithTag:101];

    [button1 setEnabled:NO];
    [button2 setEnabled:NO];
    [button3 setEnabled:NO];

    [button1 setSelected:NO];
    [button2 setSelected:NO];
    [button3 setSelected:NO];

    if([sender tag]==99)
        [button1 setSelected:YES];
        [button1 setEnabled:YES];
    else if([sender tag]==100)
        [button2 setSelected:YES];
        [button2 setEnabled:YES];
    else
        [button3 setSelected:YES];
        [button3 setEnabled:YES];
    


【讨论】:

感谢我正在寻找的东西。 SetEnabled 必须反转:[button1 setEnabled:YES]; [button2 setEnabled:YES]; [button3 setEnabled:YES]; if([发件人标签]==99) [button1 setSelected:YES]; [button1 setEnabled:NO]; 等 正要写信问这个。谢谢。现在可以正常使用了。

以上是关于如何使用自定义 UIButton 获得 UISegementedControl 功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何使自定义 UIButton 变暗

如何在 UITableViewCell 中使用自定义 UIButton?

如何在代码中创建自定义 UIButton 并在 xib 中使用它?

如何使用图像和文本制作自定义 UIButton?

UIButton具有自定义不对称可点击区域?

如何使用同一类的另一个对象设置自定义类 UIButton?