
由于常用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 }
很高兴。这是自己写的第一篇小功能小技术的实现。
以后会多多写点自己实现的小技术效能。望大家多多支持
谢谢;