博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios button标记
阅读量:5827 次
发布时间:2019-06-18

本文共 4053 字,大约阅读时间需要 13 分钟。

在写项目的时候,for循环创建多个button,在需要设置背景图片和,需要标记所选中的button的需求,

在这里提供两种方法:

一:

1:把for循环创建的button全部装到一个新建的数组中,把他们的点击事件都写在一个方法里,把button给传到方法中去,在button的点击方法里面遍历装有button的数组,让他显示没有被选择的图片,然后在把传进来的button设置成选择的图片,就可以了!

1)需要设置默认的可以如下设置

UIButton *haddbtns = [btnsAry objectAtIndex:0];        [haddbtns setTitle:@"默认封面" forState:UIControlStateNormal];        haddbtns.titleLabel.font = [UIFont systemFontOfSize:15];        haddbtns.titleLabel.backgroundColor=RGBA(29, 29, 29, 0.5);        haddbtns.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;        haddbtns. contentHorizontalAlignment =UIControlContentHorizontalAlignmentCenter;        [bgScroll bringSubviewToFront:haddbtns.titleLabel];

2)然后遍历数组,

for (UIButton *btns in btnsAry) {                if (btns) {                        [btns setTitle:@"" forState:UIControlStateNormal];        }            }

被遍历的button显示未被选择的button,传进来的btn显示被选择的样式;

 

二:

在for循环创建button的时候,在循环里面创建一个lab或者view都行,只要你认为能标记他们的就行;

1)for循环创建lab

UILabel *labs = [[UILabel alloc]init];            labs.frame =CGRectMake(appviewx, appviewy+170+heigh+420+INTERVAL_WIDHT, ADD_WIDTH, 20);            labs.tag = j+10;            labs.backgroundColor = RGBA(29, 29, 29, 0.5);                        labs.hidden = YES;            labs.userInteractionEnabled = YES;            [bgScroll addSubview:labs];            if (j==0) {                labs.hidden = NO;                labs.text = @"默认封面";                labs.font = [UIFont systemFontOfSize:13];                labs.textAlignment = NSTextAlignmentCenter;                labs.textColor = [UIColor whiteColor];                defaultLabel = labs;            }

把lab的hidden设置成yes,然后设置默认的选择,样式随自己定,设置好了以后,只需要找到tag值所标记的那个lab让它的hidden为no,展示出来就行,

2)然后在点击方法里面进行操作,

UIButton *bg_imgBtn = (UIButton *)sender;    NSLog(@"bg_imgBtn is %ld",(long)bg_imgBtn.tag);    NSInteger bgTags = bg_imgBtn.tag;          NSInteger tag = bg_imgBtn.tag-1+10;    defaultLabel.hidden = YES;    UILabel *label = (UILabel *)[self.view viewWithTag:tag];    label.hidden = NO;    label.text = @"设置封面";    label.font = [UIFont systemFontOfSize:13];    label.textAlignment = NSTextAlignmentCenter;    label.textColor = [UIColor whiteColor];    defaultLabel = label;

传进来一个button,根据创建button的tag值找到指定的lab,然后设置相应lab的属性就可以了;这样的话就可以实现了,

 

扩展:如果需要一直展示默认的图片,也就是用户没有自行选择,可以这样操作,声明一个UILabel *defaultLabel;

然后在设置默认图片的时候关联一下defaultLabel = labs;最后在点击方法里面设置defaultLabel.hidden = YES;最后设置关联defaultLabel = label;就可以了,详细的代码都在上面可以看看!

 

补充下其他的实现方式:

 

先说一下原理,就是利用中间变量来记录某个选中状态的按钮,加一个判断,如果用户下一次点击的不是这个按钮那么用中间变量把这个按钮的选中状态取消掉,再把新的按钮赋值给中间变量,这能保证选中状态的惟一性。这里是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;    }}

 

按钮的选中状态也可以直接在sb和xib里面设置好,!

 

转载于:https://www.cnblogs.com/hero11223/p/5473321.html

你可能感兴趣的文章
作为程序猿,一定要知道的电脑快捷键和Eclipse快捷键
查看>>
关于git使用 命令参考
查看>>
vs2012 提示 未能正确加载 "Visual C++ Language Manager Package" 包 的解决办法
查看>>
ELK(elasticsearch+logstash+kibana)开源日志分析平台搭建
查看>>
bootstrap19-内联表单
查看>>
【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究
查看>>
linux内核值shmmax问题
查看>>
用javascript获取屏幕高度和宽度等信息
查看>>
phpMyAdmin常见报错的解决方案
查看>>
SpringMVC与Spring、Hibernate整合
查看>>
bootstrap13-边框表格布局
查看>>
nodejs路由模块使用
查看>>
如何学会理解正向代理、反向代理和透明代理
查看>>
前端页面性能参数搜集
查看>>
ubuntu 安装截图工具 Shutter,并设置快捷键 Ctrl+Alt+A
查看>>
索引的选择性
查看>>
weblogic-weblogic问题记录
查看>>
MongoDB创建副本集
查看>>
android的drawable资源
查看>>
访问网络文件共享服务
查看>>