(5)创建继承于WXZBasePickView的单列选择器WXZCustomPickView,可根据传进来的数组显示相关的选择内容
.h声明相关属性和方法
#import "WXZBasePickView.h"
@class WXZCustomPickView;
@protocol CustomPickViewDelegate<NSObject>
- (void)customPickView:(WXZCustomPickView *)customPickView selectedTitle:(NSString *)selectedTitle;
@end
@interface WXZCustomPickView :WXZBasePickView
@property (nonatomic, strong)NSMutableArray *dataArray;
@property(nonatomic, copy)NSString *defalutSelectRowStr;
@property(nonatomic, weak)id <CustomPickViewDelegate>delegate;
@end
.m实现相关方法
#import "WXZCustomPickView.h"
@interface WXZCustomPickView()<UIPickerViewDataSource, UIPickerViewDelegate>
/** 1.选中的字符串 */
@property (nonatomic, strong, nullable)NSString *selectedTitle;
@end
@implementation WXZCustomPickView
- (void)initPickView
{
[super initPickView];
_dataArray=[NSMutableArray mutableCopy];
[self.pickerView setDelegate:self];
[self.pickerView setDataSource:self];
}
-(void)setDefalutSelectRowStr:(NSString *)defalutSelectRowStr{
_defalutSelectRowStr=defalutSelectRowStr;
for (NSInteger i = 0; i<_dataArray.count; i++) {
if ([_dataArray[i] isEqualToString:_defalutSelectRowStr]) {
[self.pickerView reloadAllComponents];
[self.pickerView selectRow:i inComponent:0 animated:NO];
}
}
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return self.dataArray.count;
}
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 36;
}
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
return self.frame.size.width;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
self.selectedTitle = self.dataArray[row];
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view
{
for(UIView *singleLine in pickerView.subviews)
{
if (singleLine.frame.size.height < 1)
{
singleLine.backgroundColor =[UIColor grayColor];
}
}
UILabel *label = [[UILabel alloc]init];
label.font=[UIFont systemFontOfSize:16];
label.textAlignment = 1;
label.text=self.dataArray[row];
return label;
}
#pragma mark -点击确定按钮
- (void)clickConfirmButton
{
[self.delegate customPickView:self selectedTitle:self.selectedTitle];
[super clickConfirmButton];
}
- (void)setDataArray:(NSMutableArray *)dataArray
{
_dataArray = dataArray;
_selectedTitle = dataArray.firstObject;
[self.pickerView reloadAllComponents];
}
@end
这样,几种类型的选择器我们都定义好了,在需要选择器的地方,根据需求创建相应的选择器即可。










