-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPMPickerViewController.m
122 lines (102 loc) · 3.74 KB
/
PMPickerViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//
// PMPickerViewController.m
// UIPopoverMenuController - UIPickerView滚轮
//
// Created by WeeverLu on 14-1-26.
// Copyright (c) 2014年 Kinth. All rights reserved.
//
#import "PMPickerViewController.h"
#import "PMHeader.h"
@interface PMPickerViewController ()
{
NSInteger selectRow; // 当前选择的行
BOOL isLoading; // 是否在滚动中
}
@end
@implementation PMPickerViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
// [0 - self.objects.count] 范围内滚动到某一行
if (self.currentRow >= 0 && self.currentRow < self.objects.count) {
selectRow = self.currentRow;
[self.pickerView selectRow:selectRow inComponent:0 animated:YES];
isLoading = NO;
}
// 左边取消按钮
UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:(UIBarButtonItemStyleBordered) target:self action:@selector(cancleAction:)];
leftItem.tintColor = [UIColor blackColor];
// 右边确定按钮
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"确定" style:(UIBarButtonItemStyleDone) target:self action:@selector(doneAction:)];
rightItem.tintColor = [UIColor blackColor];
// 中间提示-标题
//UIBarButtonItem *tipsItem = [[UIBarButtonItem alloc] initWithTitle:@"请选择时间" style:(UIBarButtonItemStylePlain) target:self action:nil];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
label.backgroundColor = [UIColor clearColor];
label.text = self.showTitle?self.showTitle:@"请选择";
label.numberOfLines = 2;
label.textColor = (kOVER_iOS7)?[UIColor blackColor]:[UIColor whiteColor];
label.textAlignment = NSTextAlignmentCenter;
label.font = [UIFont boldSystemFontOfSize:17];
UIBarButtonItem *tipsItem = [[UIBarButtonItem alloc] initWithCustomView:label];
// 间距
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemFlexibleSpace) target:self action:nil];
// toolbar
NSArray *toolItems = @[ leftItem, space, tipsItem, space, rightItem ];
self.toolbar.tintColor = [UIColor blackColor];
self.toolbar.items = toolItems;
}
#pragma mark - UIPickerView
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return self.objects.count;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
// isLoading = YES; // 测试失败,无法判断是否滚动中
id title = self.objects[row];
if ([title isKindOfClass:[NSString class]]) {
return self.objects[row];
}
return @"必须是字符串数据!";
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
selectRow = row;
isLoading = NO;
}
#pragma mark - Action
- (IBAction)cancleAction:(UIBarButtonItem *)sender
{
if (self.pickerSelectedBlock) {
self.pickerSelectedBlock(-1, NO);
}
}
- (IBAction)doneAction:(UIBarButtonItem *)sender
{
// 当前不在滚动时,可以操作下一步
if (!isLoading) {
if (self.pickerSelectedBlock) {
self.pickerSelectedBlock(selectRow, YES);
}
}
}
@end