Как добавить дату UIDatePicker в UITextField?

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

  UIDatePicker *dp = [[UIDatePicker alloc]init]; _textBirthday.inputView = dp; 

Кроме того, как я могу установить его, чтобы он принимал только пользователей, родившихся после определенного года?

1) в файле .h вашего контроллера просмотра убедитесь, что вы назначили делегат текстового поля:

 @interface YourViewController : UIViewController <UITextFieldDelegate> 

а также IBOutlet дня рождения Textfield

2) объявите выбор даты в качестве переменной класса, чтобы сделать ее доступной из всех разных методов в классе. в файле .m выполните следующие действия после импорта и перед реализацией:

 @interface YourViewController () { UIDatePicker *datePicker; } @end 

3) in viewdidload:

 // make the textfield its own delegate self.BirthdateTextfield.delegate = self; // alloc/init your date picker, and (optional) set its initial date datePicker = [[UIDatePicker alloc]init]; [datePicker setDate:[NSDate date]]; //this returns today's date // theMinimumDate (which signifies the oldest a person can be) and theMaximumDate (defines the youngest a person can be) are the dates you need to define according to your requirements, declare them: // the date string for the minimum age required (change according to your needs) NSString *maxDateString = @"01-Jan-1996"; // the date formatter used to convert string to date NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; // the specific format to use dateFormatter.dateFormat = @"dd-MMM-yyyy"; // converting string to date NSDate *theMaximumDate = [dateFormatter dateFromString: maxDateString]; // repeat the same logic for theMinimumDate if needed // here you can assign the max and min dates to your datePicker [datePicker setMaximumDate:theMaximumDate]; //the min age restriction [datePicker setMinimumDate:theMinimumDate]; //the max age restriction (if needed, or else dont use this line) // set the mode [datePicker setDatePickerMode:UIDatePickerModeDate]; // update the textfield with the date everytime it changes with selector defined below [datePicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged]; // and finally set the datePicker as the input mode of your textfield [self.BirthdateTextfield setInputView:datePicker]; 

4) в том же файле .m, определите селектор, который будет обновлять текстовое поле при каждом изменении выбора даты:

 -(void)updateTextField:(id)sender { UIDatePicker *picker = (UIDatePicker*)self.BirthdateTextfield.inputView; self.BirthdateTextfield.text = [self formatDate:picker.date]; } 

5) последнее, но не менее важное: это метод, называемый до назначения даты в textfield.text (textfield.text требуется строка, а не дата):

 - (NSString *)formatDate:(NSDate *)date { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterShortStyle]; [dateFormatter setDateFormat:@"dd-MMM-yyyy"]; NSString *formattedDate = [dateFormatter stringFromDate:date]; return formattedDate; } 

наслаждайтесь кодированием!

Установите UIDatePickerModeDate в UIDatePickerModeDate .

 datePicker.datePickerMode = UIDatePickerModeDate; 

Apple Docs : выбор даты отображает месяцы, дни месяца и годы. Точный порядок этих элементов зависит от настройки локали. Примером этого режима является [November | 15 | 2007]. Доступно в iOS 2.0 и более поздних версиях.

Используйте следующий код, который вы получите автоматически:

 - (void)viewDidLoad { [super viewDidLoad]; UIDatePicker *datePicker = [[UIDatePicker alloc]init]; [datePicker setDate:[NSDate date]]; datePicker.datePickerMode = UIDatePickerModeDate; [datePicker addTarget:self action:@selector(dateTextField:) forControlEvents:UIControlEventValueChanged]; [self.dobTextField setInputView:datePicker]; } -(void) dateTextField:(id)sender{ UIDatePicker *picker = (UIDatePicker*)self.dobTextField.inputView; [picker setMaximumDate:[NSDate date]]; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; NSDate *eventDate = picker.date; [dateFormat setDateFormat:@"dd/MM/yyyy"]; NSString *dateString = [dateFormat stringFromDate:eventDate]; self.dobTextField.text = [NSString stringWithFormat:@"%@",dateString]; } 
Interesting Posts
Давайте будем гением компьютера.