2015-03-31 5 views
-1

Я создаю приложение для здоровья и фитнеса для iOS. Как часть регистрации пользователя, они должны входить в их рост. Я прошу пользователя сделать это, используя выбор даты, но я не уверен, как я буду заниматься этим. У кого-нибудь есть общие советы или ссылки, которые могут помочь мне в правильном направлении?Как создать пользовательский UIDatePicker?

Cheers!

+2

Дата сборщиков являются для выбора даты. Используйте 'UIPickerView' для чего-нибудь еще. – rmaddy

ответ

3

Как упоминалось в rmaddy, вам необходимо использовать UIPickerView. UIDatePicker предназначен только для выбора даты/времени. Вот ссылка на документацию яблока:

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

И вот несколько советов, которые помогут вам начать работу:

1) Создайте свойство типа UIPickerView на вашем экземпляре UIViewController. Я называю это pickerView с целью демонстрации.

2) Либо выделите init pickerView, либо привяжите его к pickerView в файле раскадровки/xib.

3) Убедитесь, что вы установили delegate из pickerView, чтобы быть вашим примером UIViewController.

4) Убедитесь, что экземпляр UIViewController реализует следующие протоколы: UIPickerViewDataSource и UIPickerViewDelegate, добавив эту следующую строку кода рядом с описания интерфейса для UIViewController подкласса:

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

Если это сработало для вас, выберите его в качестве ответа, когда вы получите минуту. Благодарю. –

+0

Извините, я могу получить этот сборщик для отображения в моем контроллере. Мне не хватает '[self.view addSubview: self.pickerView],' где-то? – HowsThatMonkey

+0

Я предполагал, что вы перетащили представление сборщика в свою раскадровку и подключили его. Следовательно, свойство IBOultet. Если вы этого не сделаете, тогда да, вам нужно вручную назначить свой выборщик, а затем вызвать addSubview, как вы упомянули. –

Смежные вопросы