ios 中按钮组(类似ButtonGroup)的实现

ios中我们可能需要用到多个按钮单选的情况,类似于C#中的ButtonGroup,我遇到的情况是按钮比较大,是一张图片,多个带图片按钮提供选择,只能选择一个按钮,选择另一个按钮后,原来选中的按钮就会取消选中。

利用UIButton的两个State设置选中和未选中时不同的图片: 

UIControlStateNormal   设置为image1.png

UIControlStateSelected   设置为image2.png


selectedButton表示当前选中的按钮,未选中设为nil

按钮被选中函数触发后,判断selectedButton是否是当前按的按钮, 若是将当前的按钮的selected属性设为No, 并将selectedButton设为nil. 若不是当前按的按钮, 将selectedButton的selected属性设为No, 当前按钮的selected属性设为YES,并将selctedButton设为当前按钮,  若selectedButton为nil,  则将当前按钮的slected属性设为YES, slectedButton设为当前按钮.


代码如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [self.button1 setImage:[UIImage imageNamed:@"elephant1.png"] forState:UIControlStateNormal];
    [self.button1 setImage:[UIImage imageNamed:@"elephant2.png"] forState:UIControlStateSelected];
    [self.button1 addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.button2 setImage:[UIImage imageNamed:@"cow1.png"] forState:UIControlStateNormal];
    [self.button2 setImage:[UIImage imageNamed:@"cow2.png"] forState:UIControlStateSelected];
    [self.button2 addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.button3 setImage:[UIImage imageNamed:@"elephant1.png"] forState:UIControlStateNormal];
    [self.button3 setImage:[UIImage imageNamed:@"elephant2.png"] forState:UIControlStateSelected];
    [self.button3 addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];    

    [self.button4 setImage:[UIImage imageNamed:@"cow1.png"] forState:UIControlStateNormal];
    [self.button4 setImage:[UIImage imageNamed:@"cow2.png"] forState:UIControlStateSelected];
    [self.button4 addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];
}



- (void)clickButton:(UIButton*)button{

    if (selectedButton != nil) {
        [selectedButton setSelected:NO];
    }
    if (selectedButton == button) {
        [button setSelected:NO];
        selectedButton = nil;
    }
    else{
        [button setSelected:YES];
        selectedButton = button;        
    }
    

}





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值