iOS-단추 선택 및 다 중 논리 처리

9729 단어 ios버튼
우 리 는 항상 여러 줄 의 다 열 단추 페이지 가 있 습 니 다.이 럴 때 우 리 는 순환 생 성 단 추 를 선택 한 다음 에 단 추 를 선택 하거나 선택 하 는 동작 을 합 니 다!
단일 논리 처리

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);
}

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기