iOS开发,多个button数组,每个数组只能选中5项,多个数组只能选择3个。
由于常用xib,所以不想用代码写那么多个button。而且也懒的算位置
直接xib拉线成四个数组。水果,零食,饮料,甜点。
入题实现的功能就是,在这四个数组之中只能在3个数组只选中5项。有点绕(就比如你选择了水果和零食饮料数组中的button之后,就不能再选中甜点了);
读者自行理解吧。我不能表达的所有人都明白
头部代码
1 #import "CityViewController.h" 2 3 @interface CityViewController () 4 //button数组 5 @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *fruitsbtns; 6 @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *snacksbtns; 7 @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *drinksbtns; 8 @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *dessertbtns; 9 10 //选中数组 11 @property (nonatomic ,strong) NSMutableArray * fruitsselects; 12 @property (nonatomic ,strong) NSMutableArray * snacksselects; 13 @property (nonatomic ,strong) NSMutableArray * drinksselects; 14 @property (nonatomic ,strong) NSMutableArray * dessertselects; 15 //button数组选中不能超过3个,选中的数组添加到totalarr数组中 16 @property (nonatomic ,strong) NSMutableArray *totalarr; 17 18 @end
初始化选中的数组。
1 @implementation CityViewController 2 3 - (void)viewDidLoad { 4 [super viewDidLoad]; 5 6 //初始化选中数组 7 self.fruitsselects = [[NSMutableArray alloc] init]; 8 self.snacksselects = [[NSMutableArray alloc] init]; 9 self.drinksselects = [[NSMutableArray alloc] init]; 10 self.dessertselects = [[NSMutableArray alloc] init]; 11 12 13 14 }
接下来就是点击事件了,
同样的点击事件也必须是拉线生成的。
同一个类里面的button所有点击事件都是在同一个方法里面。(水果类下的所有button在 fruitsclicked:里面)
(零食类下的所有button在 snacksclicked:里面)
(饮料类下的所有button在 drinksclicked:里面)
(甜点类下的所有button在 dessertclicked:里面)
我封装了一个方法,用于每个类选中的button加进选中的btn数组里面;
1 - (void)select:(UIButton *)sender withselectmutablearray:(NSMutableArray *)mutablearray andarray:(NSArray *)array 2 { 3 //数组 还没选到2项的时候 4 if(self.totalarr.count <= 3) 5 { 6 for (UIButton *btn in array) { 7 8 if ([btn.currentTitle isEqualToString:sender.currentTitle]) { 9 if (!btn.selected) { 10 if (mutablearray.count <=4) { 11 btn.selected = YES; 12 [mutablearray addObject:btn]; 13 }else 14 { 15 UIAlertView *aler = [[UIAlertView alloc] initWithTitle:@"提示" message:@"选多了" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; 16 [aler show]; 17 } 18 19 }else 20 { 21 btn.selected = NO; 22 [mutablearray removeObject:btn]; 23 24 } 25 } 26 27 } 28 29 //数组不等于0的时候。 30 }else if(self.totalarr.count != 0 && mutablearray.count != 0) 31 { 32 for (UIButton *btn in array) { 33 34 if ([btn.currentTitle isEqualToString:sender.currentTitle]) { 35 if (!btn.selected) { 36 if (mutablearray.count <=4) { 37 btn.selected = YES; 38 [mutablearray addObject:btn]; 39 }else 40 { 41 UIAlertView *aler = [[UIAlertView alloc] initWithTitle:@"提示" message:@"选多了" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; 42 [aler show]; 43 } 44 45 }else 46 { 47 btn.selected = NO; 48 [mutablearray removeObject:btn]; 49 50 } 51 } 52 53 } 54 55 56 }else 57 { 58 UIAlertView *aler = [[UIAlertView alloc] initWithTitle:@"提示" message:@"选多了" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; 59 [aler show]; 60 } 61 62 63 }
四个button数组类的点击事件:
先判断total是否为空。total是记录多个数组选中了多少
1 //水果类点击事件 2 - (IBAction)fruitsClicked:(UIButton *)sender { 3 4 5 NSString *str = @"水果"; 6 7 if(self.totalarr.count == 0) 8 { 9 [self.totalarr addObject:str]; 10 }else 11 { 12 if ([self.totalarr containsObject:str]) { 13 }else 14 { 15 [self.totalarr addObject:str]; 16 } 17 } 18 19 [self select:sender withselectmutablearray:self.fruitsselects andarray:self.fruitsbtns]; 20 21 if(self.fruitsselects.count == 0) 22 { 23 [self.totalarr removeObject:str]; 24 } 25 26 27 28 } 29 30 31 //零食类点击事件 32 - (IBAction)snacksClicked:(UIButton *)sender { 33 34 NSString *str = @"零食"; 35 36 if(self.totalarr.count == 0) 37 { 38 [self.totalarr addObject:str]; 39 }else 40 { 41 if ([self.totalarr containsObject:str]) { 42 }else 43 { 44 [self.totalarr addObject:str]; 45 } 46 } 47 48 [self select:sender withselectmutablearray:self.snacksselects andarray:self.snacksbtns]; 49 50 if(self.snacksselects.count == 0) 51 { 52 [self.totalarr removeObject:str]; 53 } 54 } 55 56 //饮料类点击事件 57 - (IBAction)drinksClicked:(UIButton *)sender { 58 59 NSString *str = @"饮料"; 60 61 if(self.totalarr.count == 0) 62 { 63 [self.totalarr addObject:str]; 64 }else 65 { 66 if ([self.totalarr containsObject:str]) { 67 }else 68 { 69 [self.totalarr addObject:str]; 70 } 71 } 72 73 [self select:sender withselectmutablearray:self.drinksselects andarray:self.drinksbtns]; 74 75 if(self.drinksselects.count == 0) 76 { 77 [self.totalarr removeObject:str]; 78 } 79 80 } 81 82 //甜点类点击事件 83 - (IBAction)dessertClicked:(UIButton *)sender { 84 85 NSString *str = @"甜点"; 86 87 if(self.totalarr.count == 0) 88 { 89 [self.totalarr addObject:str]; 90 }else 91 { 92 if ([self.totalarr containsObject:str]) { 93 }else 94 { 95 [self.totalarr addObject:str]; 96 } 97 } 98 99 [self select:sender withselectmutablearray:self.dessertselects andarray:self.dessertbtns]; 100 101 if(self.dessertselects.count == 0) 102 { 103 [self.totalarr removeObject:str]; 104 } 105 106 }
很高兴。这是自己写的第一篇小功能小技术的实现。
以后会多多写点自己实现的小技术效能。望大家多多支持
谢谢;
转载于:https://www.cnblogs.com/Army598719273/p/4887560.html
iOS开发,多个button数组,每个数组只能选中5项,多个数组只能选择3个。相关推荐
- iOS开发UI篇——Button基础
一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 1. normal(普通状态) ...
- IOS开发之自定义Button(集成三种回调模式)
前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调 ...
- iOS开发:不可变数组和可变数组的区别分析(NSArray / NSMutableArray)
本篇博文分享一个理论知识点,Object-C中可变数组和不可变数组的对比使用,知识比较简单基础,大牛可以忽略.在iOS开发中,一般经常用NSArray类和NSMutableArray类来表示数组,其中 ...
- iOS开发23:通过归档永久存储数据
2019独角兽企业重金招聘Python工程师标准>>> 之前一篇文章<iOS开发20:使用Settings Bundle为程序添加设置项>中简单介绍了怎样在Setting ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课 ...
- android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...
先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...
- ios开发 - ios6 自动布局 1
原文地址:http://www.raywenderlich.com/zh-hans/22873/ios-6-%E8%87%AA%E5%8A%A8%E5%B8%83%E5%B1%80-%E5%85%A5 ...
- iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据
iOS开发:沙盒机制以及利用沙盒存储字符串.数组.字典等数据 1.初识沙盒:(1).存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的.要想数据永久保存,将数据保存成文件,存储到程 ...
- IOS开发基础之网易新闻JSON转模型数组第2天
IOS开发基础之网易新闻JSON转模型数组第2天 // // HMHeadline.h // 01-网易新闻搭建 // // Created by 鲁军 on 2021/4/11. //#import ...
最新文章
- win7-64系统安装oracle 11G客户端
- AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
- HADOOP都升级到2.5啦~~~
- html获取qq头像代码,jQuery在线获取QQ名称和头像
- 《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧
- 每天都用手机,你对麦克风了解吗?
- 屏幕持续升级!一加8斩获DisplayMate A+评级
- python alter_GitHub - sealter/LearnPython: 以撸代码的形式学习Python
- 又一个国内知名论坛,突然被全面叫停!
- 简单的php商城,简单的php商城
- 机器学习中的数学——激活函数(二):双曲正切函数(Tanh函数)
- 十次方:区块链需要服务器吗?
- Java 定时任务JOB
- 最优化理论与方法学习笔记01——黄金分割法与进退法求单峰区间Matlab编程实现
- 世界各个国家及其国家代码
- 计算机财务管理复利现值的公式,财务管理公式汇总
- 【黄冈市中级人民法院在湖北行星传动设备有限公司的强制清算案件中的违法问题给投资者的启示】
- mysql gone away的几种原因
- python数据分析经典书籍有哪些_数据分析有哪些好书值得推荐?
- C#之十八 GUI用户界面编程
热门文章
- C# list集合 重复元素 索引_源码分析专题10-纯手写JDK不同版本下的List接口
- 基于视觉的烟雾/火焰检测数据集整理(检测、识别、分割)
- 网络爬虫之Java基础篇(Ⅱ)
- Java学习笔记--导航
- 【入门5】字符串(今天刷洛谷了嘛)
- 吉林省计算机科学与技术专业测评,我校计算机科学与技术、英语两个专业在吉林省专业综合评价中获得可喜成绩...
- jpa 托管_java – jpa非托管实体
- 基于android的课程画图设计,基于Android的智能终端通信勘察设计系统绘图模块的设计与实现...
- 外卖和快递行业数据_外卖和快递骑手管理“上轨道”
- 【linux】Linux配置环境变量