亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

詳解iOS-按鈕單選與多選邏輯處理

2020-07-26 02:52:35
字體:
來源:轉載
供稿:網友

我們經常會有多行多列按鈕的頁面, 這個時候我們通常會選擇循環創建按鈕, 然后進行按鈕單選或者多選的操作!

一. 單選邏輯處理

1. 創建按鈕控件數組及標簽數組, 并升級當前選中按鈕為屬性,方便使用

#define ZLUnselectedColor [UIColor colorWithRed:(241)/255.0 green:(242)/255.0 blue:(243)/255.0 alpha:1.0]#define ZLSelectedColor [UIColor colorWithRed:(108)/255.0 green:(187)/255.0 blue:(82)/255.0 alpha:1.0]@interface ZLRadioViewController ()// 標簽數組(按鈕文字)@property (nonatomic, strong) NSArray *markArray;// 按鈕數組@property (nonatomic, strong) NSMutableArray *btnArray;// 選中按鈕@property (nonatomic, strong) UIButton *selectedBtn;@end
#pragma mark - 懶加載- (NSArray *)markArray {  if (!_markArray) {    NSArray *array = [NSArray array];    array = @[@"14", @"15", @"16", @"17", @"18"];    _markArray = array;  }  return _markArray;}- (NSMutableArray *)btnArray {  if (!_btnArray) {    NSMutableArray *array = [NSMutableArray array];    _btnArray = array;  }  return _btnArray;}

2. 創建單選視圖, 循環創建按鈕, 并回顯上次選中值

- (void)setupRadioBtnView {  CGFloat UI_View_Width = [UIScreen mainScreen].bounds.size.width;  CGFloat marginX = 15;  CGFloat top = 100;  CGFloat btnH = 30;  CGFloat width = (250 - marginX * 4) / 3;  // 按鈕背景  UIView *btnsBgView = [[UIView alloc] initWithFrame:CGRectMake((UI_View_Width - 250) * 0.5, 50, 250, 300)];  btnsBgView.backgroundColor = [UIColor whiteColor];  [self.view addSubview:btnsBgView];  // 循環創建按鈕  NSInteger maxCol = 3;  for (NSInteger i = 0; i < 5; i++) {    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];    btn.backgroundColor = ZLUnselectedColor;    btn.layer.cornerRadius = 3.0; // 按鈕的邊框弧度    btn.clipsToBounds = YES;    btn.titleLabel.font = [UIFont boldSystemFontOfSize:12];    [btn setTitleColor:[UIColor colorWithRed:(102)/255.0 green:(102)/255.0 blue:(102)/255.0 alpha:1.0] forState:UIControlStateNormal];    [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];    [btn addTarget:self action:@selector(chooseMark:) forControlEvents:UIControlEventTouchUpInside];    NSInteger col = i % maxCol; //列    btn.x = marginX + col * (width + marginX);    NSInteger row = i / maxCol; //行    btn.y = top + row * (btnH + marginX);    btn.width = width;    btn.height = btnH;    [btn setTitle:self.markArray[i] forState:UIControlStateNormal];    [btnsBgView addSubview:btn];    btn.tag = i;    [self.btnArray addObject:btn];  }  // 創建完btn后再判斷是否能選擇(之前是已經選取過的)  // 假數據:之前已經上傳16時,則回顯16  for (UIButton *btn in btnsBgView.subviews) {    if ([@"16" isEqualToString:btn.titleLabel.text]) {      btn.selected = YES;      btn.backgroundColor = ZLSelectedColor;      break;    }  }}

3. 數字按鈕單選處理, 根據tag值去判斷是否是當前選中按鈕

- (void)chooseMark:(UIButton *)sender {  NSLog(@"點擊了%@", sender.titleLabel.text);  self.selectedBtn = sender;  sender.selected = !sender.selected;  for (NSInteger j = 0; j < [self.btnArray count]; j++) {    UIButton *btn = self.btnArray[j] ;    if (sender.tag == j) {      btn.selected = sender.selected;    } else {      btn.selected = NO;    }    btn.backgroundColor = ZLUnselectedColor;  }  UIButton *btn = self.btnArray[sender.tag];  if (btn.selected) {    btn.backgroundColor = ZLSelectedColor;  } else {    btn.backgroundColor = ZLUnselectedColor;  }}

二. 多選邏輯處理

1. 創建按鈕控件數組和標簽字典, 及選中標簽數組(數字)和選中標簽數組(文字字符串), 為了展示及上傳按鈕數據使用

#define ZLUnselectedColor [UIColor colorWithRed:(241)/255.0 green:(242)/255.0 blue:(243)/255.0 alpha:1.0]#define ZLSelectedColor [UIColor colorWithRed:(128)/255.0 green:(177)/255.0 blue:(34)/255.0 alpha:1.0]@interface ZLMultiselectController ()// 標簽數組@property (nonatomic, strong) NSArray *markArray;// 標簽字典@property (nonatomic, strong) NSDictionary *markDict;// 選中標簽數組(數字)@property (nonatomic, strong) NSMutableArray *selectedMarkArray;// 選中標簽數組(文字字符串)@property (nonatomic, strong) NSMutableArray *selectedMarkStrArray;@end
#pragma mark - 懶加載- (NSArray *)markArray {  if (!_markArray) {    NSArray *array = [NSArray array];    array = @[@"導購", @"客服", @"家教", @"禮儀", @"主持"];    _markArray = array;  }  return _markArray;}// 上傳通過文字key取數字value發送數字- (NSDictionary *)markDict {  if (!_markDict) {    NSDictionary *dict = [NSDictionary dictionary];    dict = @{         @"導購" : @"3" ,         @"客服" : @"7",         @"家教" : @"9",         @"禮儀" : @"10",         @"主持" : @"11",         };    _markDict = dict;  }  return _markDict;}- (NSMutableArray *)selectedMarkArray {  if (!_selectedMarkArray) {    _selectedMarkArray = [NSMutableArray array];  }  return _selectedMarkArray;}- (NSMutableArray *)selectedMarkStrArray {  if (!_selectedMarkStrArray) {    _selectedMarkStrArray = [NSMutableArray array];  }  return _selectedMarkStrArray;}

2.循環創建按鈕視圖, 循環創建按鈕

- (void)setupMultiselectView {  CGFloat UI_View_Width = [UIScreen mainScreen].bounds.size.width;  CGFloat marginX = 15;  CGFloat top = 19;  CGFloat btnH = 35;  CGFloat marginH = 40;  CGFloat height = 130;  CGFloat width = (UI_View_Width - marginX * 4) / 3;  // 按鈕背景  UIView *btnsBgView = [[UIView alloc] initWithFrame:CGRectMake(0, 100, UI_View_Width, height)];  btnsBgView.backgroundColor = [UIColor whiteColor];  [self.view addSubview:btnsBgView];  // 循環創建按鈕  NSInteger maxCol = 3;  for (NSInteger i = 0; i < 5; i++) {    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];    btn.backgroundColor = ZLUnselectedColor;    btn.layer.cornerRadius = 3.0; // 按鈕的邊框弧度    btn.clipsToBounds = YES;    btn.titleLabel.font = [UIFont boldSystemFontOfSize:14];    [btn setTitleColor:[UIColor colorWithRed:(102)/255.0 green:(102)/255.0 blue:(102)/255.0 alpha:1.0] forState:UIControlStateNormal];    [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];    [btn addTarget:self action:@selector(chooseMark:) forControlEvents:UIControlEventTouchUpInside];    NSInteger col = i % maxCol; //列    btn.x = marginX + col * (width + marginX);    NSInteger row = i / maxCol; //行    btn.y = top + row * (btnH + marginX);    btn.width = width;    btn.height = btnH;    [btn setTitle:self.markArray[i] forState:UIControlStateNormal];    [btnsBgView addSubview:btn];  }  // 確定按鈕  UIButton *surebtn = [UIButton buttonWithType:UIButtonTypeCustom];  [surebtn setTitle:@"確定" forState:UIControlStateNormal];  surebtn.frame = CGRectMake(marginX * 2, CGRectGetMaxY(btnsBgView.frame) + marginH, UI_View_Width - marginX * 4, 40);  surebtn.titleLabel.font = [UIFont boldSystemFontOfSize:16];  [surebtn addTarget:self action:@selector(sureBtnClick) forControlEvents:UIControlEventTouchUpInside];  surebtn.backgroundColor = [UIColor orangeColor];  surebtn.layer.cornerRadius = 3.0;  surebtn.clipsToBounds = YES;  [self.view addSubview:surebtn];}

3. 按鈕多選邏輯處理, 并上傳數據請求處理

/** * 按鈕多選處理 */- (void)chooseMark:(UIButton *)btn {  btn.selected = !btn.selected;  if (btn.isSelected) {    btn.backgroundColor = ZLSelectedColor;    [self.selectedMarkArray addObject:self.markDict[btn.titleLabel.text]];    [self.selectedMarkStrArray addObject:btn.titleLabel.text];  } else {    btn.backgroundColor = ZLUnselectedColor;    [self.selectedMarkArray removeObject:self.markDict[btn.titleLabel.text]];    [self.selectedMarkStrArray removeObject:btn.titleLabel.text];  }}/** * 確認接口請求處理 */- (void)sureBtnClick {  // 用戶選擇標簽后就把值上傳, 也要傳給服務器下次直接請求回來  // 按鈕數字標識字符串  NSString *numStr = [self.selectedMarkArray componentsJoinedByString:@","];  // 按鈕文字字符串  NSString *str = [self.selectedMarkStrArray componentsJoinedByString:@","];  // 測試:拼接請求參數  NSLog(@"按鈕數字標識字符串:%@", numStr);  NSLog(@"按鈕文字字符串:%@", str);}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品自拍第一页| 久久99青青精品免费观看| 久久精品国产成人精品| 欧美激情啊啊啊| 91亚洲国产成人久久精品网站| 欧美日韩中文在线| 亚洲精品美女网站| 欧美日韩免费在线| 69国产精品成人在线播放| 91精品国产91久久| 亚洲男人第一av网站| 亚洲精品国产拍免费91在线| 国产精品成人免费视频| 夜夜嗨av一区二区三区免费区| 国产精品美女呻吟| 久久国产精品99国产精| 91av视频在线播放| 97久久精品在线| 成人久久18免费网站图片| 欧美日韩免费区域视频在线观看| 亚洲97在线观看| 91国产美女在线观看| 日韩中文字幕在线观看| 久久精品99久久香蕉国产色戒| 日韩中文字幕精品| 久久免费精品视频| 亚洲精品美女久久久| 91美女高潮出水| 欧美在线视频一区二区| 欧美精品免费播放| 国产精品一区=区| 国产精品久久久久久久久久久新郎| 久久久久在线观看| 91精品国产色综合久久不卡98| 欧美黄色片在线观看| 国产亚洲a∨片在线观看| 主播福利视频一区| 成人精品福利视频| 国产美女精品视频| 日韩精品久久久久久久玫瑰园| 在线看片第一页欧美| 欧美成人第一页| 亚洲欧美国产日韩天堂区| 亚洲精品黄网在线观看| 最新国产精品拍自在线播放| 国产成人精品久久亚洲高清不卡| 色狠狠av一区二区三区香蕉蜜桃| 精品国产福利视频| 久久免费少妇高潮久久精品99| 日韩av在线看| 欧美裸体xxxx极品少妇| 亚洲美女性视频| 国产精品精品久久久久久| 欧美性在线视频| xxav国产精品美女主播| 久久久久久午夜| 色一区av在线| 在线播放日韩欧美| 91精品国产综合久久香蕉的用户体验| 在线观看免费高清视频97| 久久久精品一区| 国产精品自拍网| 亚洲日本欧美中文幕| 日韩欧美精品中文字幕| 国产精品成人一区二区| 亚洲性无码av在线| 欧美色视频日本高清在线观看| 精品国产一区二区三区久久久狼| 色综合色综合久久综合频道88| 久久久久国产一区二区三区| 在线丨暗呦小u女国产精品| 亚洲欧美在线一区二区| 亚洲欧美一区二区三区在线| 亚洲美女中文字幕| 久久99精品久久久久久噜噜| 成人免费视频网址| 国产成人高清激情视频在线观看| 91影视免费在线观看| 2023亚洲男人天堂| 亚洲第一页中文字幕| 亚洲精品成人久久久| 亚洲欧美福利视频| 日韩欧美国产高清91| 欧美成人第一页| 国产精品福利观看| 国产精品免费视频久久久| 亚洲三级黄色在线观看| 日韩精品中文字幕有码专区| 欧美日韩国产在线看| 国产精品高潮在线| 亚洲天堂免费视频| 欧美激情图片区| 一区二区三区四区精品| 久久香蕉国产线看观看av| 欧美专区在线播放| 91色精品视频在线| 亚洲老头老太hd| 日韩高清欧美高清| 久久精品小视频| 欧美一区二粉嫩精品国产一线天| 亚洲高清免费观看高清完整版| 538国产精品一区二区在线| 久久综合88中文色鬼| 26uuu久久噜噜噜噜| 91精品国产高清久久久久久91| 国产日韩在线一区| 欧美激情性做爰免费视频| 91极品女神在线| 欧美性受xxxx黑人猛交| 久久伊人精品天天| 亚洲精品影视在线观看| 欧美大片网站在线观看| 欧美中文字幕第一页| 色爱av美腿丝袜综合粉嫩av| 欧美成在线视频| 亚洲视频网站在线观看| 91精品视频免费| 精品国产91久久久久久| 国产精品久久久久久久天堂| 国产精品久在线观看| 国产日韩欧美日韩| 国产精品日本精品| 亚洲成人三级在线| 国产精品精品国产| 亚洲午夜小视频| 色综合五月天导航| 国产欧美一区二区白浆黑人| 欧美日本黄视频| 成人网在线视频| 欧美激情免费看| 高清欧美一区二区三区| 在线免费看av不卡| 久久精品一偷一偷国产| 91精品一区二区| 色综合天天狠天天透天天伊人| 一道本无吗dⅴd在线播放一区| 国产精品大片wwwwww| 日韩国产高清视频在线| 精品中文字幕在线2019| 日韩午夜在线视频| 亚洲精品mp4| 国产欧美日韩中文字幕| 欧美主播福利视频| 538国产精品一区二区免费视频| 欧美色视频日本版| 欧美精品中文字幕一区| 国产精品视频导航| 性日韩欧美在线视频| 97av在线视频免费播放| 日韩欧美国产一区二区| 亚洲女同性videos| 欧美成人激情视频免费观看| 亚洲精品国产精品国自产观看浪潮| 日韩欧美亚洲成人| 亚洲欧美国产一本综合首页| 亚洲天堂av综合网| 色综合亚洲精品激情狠狠| 欧美在线一级va免费观看| 色综合视频网站| 欧美亚洲另类制服自拍| 日本不卡视频在线播放| 91久久久久久久久| 日韩免费在线播放| 日韩av一卡二卡|