iOS UPIckerViewのシンプルパッケージ例


前言
iOSの実際のプロジェクトでは、インタフェースの中で多くのところでUPIckerViewを使う必要があります。必要なところごとにUPIckerViewを作成すると、より性能が消耗するだけでなく、コードが混乱し、冗長になることもありますので、ここでUICPIERViewの簡単なパッケージを紹介します。
必要な属性

/** pickerView*/
@property (nonatomic, strong) UIPickerView pickerView;
/* pickerView  */
@property (nonatomic, strong) UIView pickerBackGroundView;
/*   */
@property (nonatomic, strong) UIView backGroundView;
/*     */
@property (nonatomic, strong) UIButton sureButton;
/*     */
@property (nonatomic, strong) UIButton cancelButton;
/*   pickerView*/
@property (nonatomic, strong) NSMutableArray slDataArray;
/*   pickerView*/
@property (nonatomic, strong) NSMutableArray *mulDataArray;
一列だけが必要ならば、一つのデータ配列に入るだけでいいです。sladataArayは、二行が必要ならば、二つの配列はすべて割り当てが必要です。
UPIckerViewの代理方法を実現します。

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
  if (self.mulDataArray.count == 0) {
  return 1;
 }else {
  return 2;
  }
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
 if (component == 0) {
  return self.slDataArray.count;
  }else {
  return self.mulDataArray.count;
 }
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
 if (component == 0) {
  return self.slDataArray[row];
 }else {
 return self.mulDataArray[row];
 }
}
ここでは2つの配列に基づいてpickerViewの内容を初期化します。すなわち、2番目の配列がデータを持っているかどうかを判断します。データがあると、2列のpickerViewをロードすることを表します。そうでなければ、1列をロードします。
機能の実現

-(void)pickerViewSelectRow:(NSInteger)row
{
 self.selectRow = row;
 [self.pickerView selectRow:row inComponent:0 animated:NO];
}
-(void)pickerViewSelectRow:(NSInteger)row lastRow:(NSInteger)lastRow{
 [self.pickerView selectRow:row inComponent:0 animated:NO];
 [self.pickerView selectRow:lastRow inComponent:1 animated:NO];
}
一つ目の方法は、一列のpickerViewを初期化することで、どの行を選択しますか?二つ目は二列の選択方法です。

-(void)showOrHidePickerView:(BOOL)isShow{
 if (isShow) {
  if (self.isPickerShow == NO) {
   [self addSubview:self.backGroundView];
   [self addSubview:self.pickerBackGroundView];
   [UIView animateWithDuration:0.3 animations:^{
     self.backGroundView.alpha = 0.5;
     self.pickerBackGroundView.frame = CGRectMake(0, SCREEN_HEIGHT -220, SCREEN_WIDTH, 220);
   } completion:^(BOOL finished) {   self.isPickerShow = YES;
   }];
  }
 }else {
  if (self.isPickerShow) {
   [UIView animateWithDuration:0.3 animations:^{
   self.backGroundView.alpha = 0.0;
   self.pickerBackGroundView.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, 220);
  } completion:^(BOOL finished) {
   [self.backGroundView removeFromSuperview];
   [self.pickerBackGroundView removeFromSuperview];
   self.isPickerShow = NO;
  }];
  }
 }
}
この方法はpickerViewを表示または非表示にし、アニメーション方式によって背景が徐々に黒くなったり透明になったり、pickerViewが下から上に現れたり、上から下に消えたりします。

-(void)pickerViewReloadData{
 [self.pickerView reloadAllComponents];
}
pickerViewデータを更新して、他のpickerViewをロードする時、この方法を呼び出して更新します。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。