iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法
iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法
先说一下原理,就是利用中间变量来记录某个选中状态的按钮,加一个判断,如果用户下一次点击的不是这个按钮那么用中间变量把这个按钮的选中状态取消掉,再把新的按钮赋值给中间变量,这能保证选中状态的惟一性。这里是OC 应用在iOS 项目中的,下面来看具体实现。
首先我们先定义一个中间变量
@property (strong,nonatomic)UIButton * MiddleBtn;
然后在ViewDidLoad方法里,创建四个按钮,设置它们属性,以及点击方法,在此外设置中间变量 MiddleBtn = nil;
—(void)viewDidLoad{
MiddleBtn = nil;
// treating unicode character as whitespace 如果出现这行警告 可能是由于粘贴网页上的代码的时候两行之间的回车引起的,两行之间重新输入回车就行...。。。删掉重新写一遍就ok了
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 (_MiddleBtn == nil){
sender.selected = YES;
_MiddleBtn = sender;
}
else if (_MiddleBtn !=nil && _MiddleBtn == sender){
sender.selected = YES;
}
else if (_MiddleBtn!= sender && _MiddleBtn!=nil){
_MiddleBtn.selected = NO;
sender.selected = YES;
_MiddleBtn = sender;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用