由于常用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:里面)
?。闶愁愊碌乃衎utton在 snacksclicked:里面)
(飲料類下的所有button在 drinksclicked:里面)
?。ㄌ瘘c類下的所有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 }else14 {15 UIAlertView *aler = [[UIAlertView alloc] initWithTitle:@"提示" message:@"選多了" delegate:self cancelButtonTitle:@"確定" otherButtonTitles: nil];16 [aler show];17 }18 19 }else20 {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 }else40 {41 UIAlertView *aler = [[UIAlertView alloc] initWithTitle:@"提示" message:@"選多了" delegate:self cancelButtonTitle:@"確定" otherButtonTitles: nil];42 [aler show];43 }44 45 }else46 {47 btn.selected = NO;48 [mutablearray removeObject:btn];49 50 }51 }52 53 }54 55 56 }else57 {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 }
很高興。這是自己寫的第一篇小功能小技術的實現。
以后會多多寫點自己實現的小技術效能。望大家多多支持
謝謝;
新聞熱點
疑難解答