如何创建自定义 UIDatePicker?
How do you create a custom UIDatePicker?
我正在为 iOS 创建一个健康和健身应用程序。作为用户注册的一部分,他们必须输入身高。我要求用户使用日期选择器来执行此操作,但我不确定我将如何执行此操作。谁有任何可以指导我正确方向的一般提示或链接?
干杯!
正如 rmaddy 所暗示的,您将需要使用 UIPickerView
。 UIDatePicker
仅用于选择日期/时间。这是 Apple 文档的 link:
这里有一些帮助您入门的提示:
1) 在您的 UIViewController
实例上创建类型 UIPickerView
的 属性。出于演示目的,我将其命名为 pickerView
。
2) 将 pickerView
或 link 分配到故事板/xib 文件上的 pickerView
。
3) 确保将 pickerView
的 delegate
设置为 UIViewController
.
的实例
4) 确保您的 UIViewController
实例实现以下协议:UIPickerViewDataSource
和 UIPickerViewDelegate
通过在您的 [=15] 的接口声明旁边添加以下代码行=] 子类:
<UIPickerViewDataSource, UIPickerViewDelegate>
5) 实际实现 UIPickerViewDataSource
和 UIPickerViewDelegate
所需的方法(以及任何可选的方法)。这就是您如何告诉 pickerView
它有多少行和列,以及用什么文本填充所述行和列。
部分示例代码如下:
// MyViewController.h
@interface MyViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
@end
// MyViewController.m
@implementation MyViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.pickerView.delegate = self;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
// components are like columns. one column for feet and one for inches
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if(component == 0){
return [[self getUserDetailsHeightFeetOptions]count];
} else {
return [[self getUserDetailsHeightInchesOptions]count];
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if(component == 0){
return [NSString stringWithFormat:@"%@", [[self getUserDetailsHeightFeetOptions]objectAtIndex:row]];
} else {
return [NSString stringWithFormat:@"%@", [[self getUserDetailsHeightInchesOptions]objectAtIndex:row]];
}
}
- (NSArray*)getUserDetailsHeightFeetOptions{
NSMutableArray *feetOptions = [[NSMutableArray alloc]init];
for (int i = 3; i < 8; i++) {
[feetOptions addObject:[NSNumber numberWithInt:i]];
}
return feetOptions;
}
- (NSArray*)getUserDetailsHeightInchesOptions{
NSMutableArray *inchesOptions = [[NSMutableArray alloc]init];
for (int i = 0; i < 12; i++) {
[inchesOptions addObject:[NSNumber numberWithInt:i]];
}
return inchesOptions;
}
这里有一个完整的实现,如果你喜欢https://kmdarshan.wordpress.com/2015/05/03/creating-a-ios-type-date-picker-with-custom-text-in-it/
我正在为 iOS 创建一个健康和健身应用程序。作为用户注册的一部分,他们必须输入身高。我要求用户使用日期选择器来执行此操作,但我不确定我将如何执行此操作。谁有任何可以指导我正确方向的一般提示或链接?
干杯!
正如 rmaddy 所暗示的,您将需要使用 UIPickerView
。 UIDatePicker
仅用于选择日期/时间。这是 Apple 文档的 link:
这里有一些帮助您入门的提示:
1) 在您的 UIViewController
实例上创建类型 UIPickerView
的 属性。出于演示目的,我将其命名为 pickerView
。
2) 将 pickerView
或 link 分配到故事板/xib 文件上的 pickerView
。
3) 确保将 pickerView
的 delegate
设置为 UIViewController
.
4) 确保您的 UIViewController
实例实现以下协议:UIPickerViewDataSource
和 UIPickerViewDelegate
通过在您的 [=15] 的接口声明旁边添加以下代码行=] 子类:
<UIPickerViewDataSource, UIPickerViewDelegate>
5) 实际实现 UIPickerViewDataSource
和 UIPickerViewDelegate
所需的方法(以及任何可选的方法)。这就是您如何告诉 pickerView
它有多少行和列,以及用什么文本填充所述行和列。
部分示例代码如下:
// MyViewController.h
@interface MyViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
@end
// MyViewController.m
@implementation MyViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.pickerView.delegate = self;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
// components are like columns. one column for feet and one for inches
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if(component == 0){
return [[self getUserDetailsHeightFeetOptions]count];
} else {
return [[self getUserDetailsHeightInchesOptions]count];
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if(component == 0){
return [NSString stringWithFormat:@"%@", [[self getUserDetailsHeightFeetOptions]objectAtIndex:row]];
} else {
return [NSString stringWithFormat:@"%@", [[self getUserDetailsHeightInchesOptions]objectAtIndex:row]];
}
}
- (NSArray*)getUserDetailsHeightFeetOptions{
NSMutableArray *feetOptions = [[NSMutableArray alloc]init];
for (int i = 3; i < 8; i++) {
[feetOptions addObject:[NSNumber numberWithInt:i]];
}
return feetOptions;
}
- (NSArray*)getUserDetailsHeightInchesOptions{
NSMutableArray *inchesOptions = [[NSMutableArray alloc]init];
for (int i = 0; i < 12; i++) {
[inchesOptions addObject:[NSNumber numberWithInt:i]];
}
return inchesOptions;
}
这里有一个完整的实现,如果你喜欢https://kmdarshan.wordpress.com/2015/05/03/creating-a-ios-type-date-picker-with-custom-text-in-it/