如何创建自定义 UIDatePicker?

How do you create a custom UIDatePicker?

我正在为 iOS 创建一个健康和健身应用程序。作为用户注册的一部分,他们必须输入身高。我要求用户使用日期选择器来执行此操作,但我不确定我将如何执行此操作。谁有任何可以指导我正确方向的一般提示或链接?

干杯!

正如 rmaddy 所暗示的,您将需要使用 UIPickerViewUIDatePicker 仅用于选择日期/时间。这是 Apple 文档的 link:

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIPickerView_Class/index.html

这里有一些帮助您入门的提示:

1) 在您的 UIViewController 实例上创建类型 UIPickerView 的 属性。出于演示目的,我将其命名为 pickerView

2) 将 pickerView 或 link 分配到故事板/xib 文件上的 pickerView

3) 确保将 pickerViewdelegate 设置为 UIViewController.

的实例

4) 确保您的 UIViewController 实例实现以下协议:UIPickerViewDataSourceUIPickerViewDelegate 通过在您的 [=15] 的接口声明旁边添加以下代码行=] 子类:

<UIPickerViewDataSource, UIPickerViewDelegate>

5) 实际实现 UIPickerViewDataSourceUIPickerViewDelegate 所需的方法(以及任何可选的方法)。这就是您如何告诉 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/