簡體   English   中英

如何創建自定義UIDatePicker?

[英]How do you create a custom UIDatePicker?

我正在為iOS創建健康和健身應用程序。 作為用戶注冊的一部分,他們必須輸入身高。 我要求用戶使用日期選擇器來執行此操作,但是我不確定如何執行此操作。 任何人都有任何常規技巧或鏈接可以指導我正確的方向嗎?

干杯!

就像rmaddy提到的那樣,您將需要使用UIPickerView UIDatePicker僅用於選擇日期/時間。 這是蘋果文檔的鏈接:

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

以下是一些幫助您入門的提示:

1)在您的UIViewController實例上創建UIPickerView類型的屬性。 為了進行演示,我將其pickerView

2)要么的alloc初始化的pickerView或將其鏈接到一個pickerView上的故事板/ XIB文件。

3)確保將pickerViewdelegate設置為UIViewController的實例。

4)通過在UIViewController子類的接口聲明旁邊添加以下代碼行,確保您的UIViewController實例實現以下協議: UIPickerViewDataSourceUIPickerViewDelegate

<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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM