iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法
2014-07-23 17:14
946 查看
在做项目过程中,特别是商城类的项目、学习考试类的项目中,通常会有根据销量,价格,时间排序,以及单项选则题这样的要求。
先说一下原理,就是利用中间变量来记录某个选中状态的按钮,加一个判断,如果用户下一次点击的不是这个按钮那么用中间变量把这个按钮的选中状态取消掉,再把新的按钮赋值给中间变量,这能保证选中状态的惟一性。这里是OC 应用在iOS 项目中的,下面来看具体实现。
首先我们先定义一个中间变量
—(void)viewDidLoad{
NSArray * array = [NSArray arrayWithObjects:@"默认",@"销量",@"价格",@"时间", nil];
for (int i = 0; i<4; i ++) {
UIButton * button = [[UIButton alloc]initWithFrame:CGRectMake(80*i, 0, 80, 40)];
[button setTitle:[array objectAtIndex:i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
[button.titleLabel setFont:[UIFont systemFontOfSize:14]];
[button.layer setBorderWidth:0.3];
button.userInteractionEnabled = YES;
[button addTarget:self action:@selector(buttonSelected:) forControlEvents:UIControlEventTouchUpInside];
[button setBackgroundColor:[UIColor whiteColor]];
[button setTag:i];
[self.view addSubview:button];
}
下面来看buttonselected:里面的实现过程
先说一下原理,就是利用中间变量来记录某个选中状态的按钮,加一个判断,如果用户下一次点击的不是这个按钮那么用中间变量把这个按钮的选中状态取消掉,再把新的按钮赋值给中间变量,这能保证选中状态的惟一性。这里是OC 应用在iOS 项目中的,下面来看具体实现。
首先我们先定义一个中间变量
@property (strong,nonatomic)UIButton * tmpBtn;然后在ViewDidLoad方法里,创建四个按钮,设置它们属性,以及点击方法,在此外设置中间变量tmpBtn = nil;
—(void)viewDidLoad{
NSArray * array = [NSArray arrayWithObjects:@"默认",@"销量",@"价格",@"时间", nil];
for (int i = 0; i<4; i ++) {
UIButton * button = [[UIButton alloc]initWithFrame:CGRectMake(80*i, 0, 80, 40)];
[button setTitle:[array objectAtIndex:i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
[button.titleLabel setFont:[UIFont systemFontOfSize:14]];
[button.layer setBorderWidth:0.3];
button.userInteractionEnabled = YES;
[button addTarget:self action:@selector(buttonSelected:) forControlEvents:UIControlEventTouchUpInside];
[button setBackgroundColor:[UIColor whiteColor]];
[button setTag:i];
[self.view addSubview:button];
}
下面来看buttonselected:里面的实现过程
-(void)buttonSelected:(UIButton*)sender{ if (_tmpBtn == nil){ sender.selected = YES; _tmpBtn = sender; } else if (_tmpBtn !=nil && _tmpBtn == sender){ sender.selected = YES; } else if (_tmpBtn!= btn && _tmpBtn!=nil){ _tmpBtn.selected = NO; sender.selected = YES; _tmpBtn = btn; } }代码直接粘贴可用。
相关文章推荐
- iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法
- iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法
- 实现多个按钮,点选一个其它都取消选中状态的方法
- 多个按钮,选一个其它取消选中状态的方法
- 按钮点击一个,其它都取消选中状态的iOS开发,
- 微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
- IOS中对于多个按钮,选中其中一个,其他按钮选中状态为NO
- iOS开发-UI高级 选中按钮的实现方法总结
- html中点击radio后的文字相当于选中该单选按钮如何实现?怎么实现两个redio,选中一个,取消另一个?
- jquery实现radio按钮在分组状态下点击选中,再次点击取消选中
- iOS中对于多个按钮,选中其中一个,其他按钮选中状态为NO
- iOS开发小技巧--取消按钮的选中状态
- EasyUI配置当点击一个datagrid的checkbox选中或取消选中记录的时候刷新另一个datagrid数据的方法
- iOS 自定义UITableViewCell上添加UIButton按钮实现选中的是哪个按钮对应的cell,用代理实现。
- jQuery实现点击单选按钮切换选中状态效果
- Cmenu类方法判断弹出按钮选中状态并做相应处理
- how to 实现一个排序 ,第一排序按状态升序,第二排序状态为2 时,按id 升序,状态为其它时,按状态降序
- 论坛源码推荐(7月22日):用Swift实现的具有指示器的按钮 一个开源iOS个人跟踪工具
- UIWebView中视频点击链接直接全屏播放而不是点击一个播放按钮的实现方法
- iOS tableviewcell左划自定义(带图片)删除按钮,点击任意地方取消删除的巧妙实现方法