【发布时间】:2014-05-09 10:17:45
【问题描述】:
我正在开发一个具有 3 个文本字段和一个 UIDatePicker 的 iOS 应用程序。
当我在 DatePicker 中选择一个时间时,我应该在 TextField 上显示它,但我无法让它工作。
这是我的文件:
Login.h
#import <UIKit/UIKit.h>
@interface Login : UIViewController<UIPickerViewDelegate>
{
}
@property (weak) IBOutlet UILabel * label;
@property (weak) IBOutlet UITextField * username;
@property (weak) IBOutlet UITextField * password;
@property (weak) IBOutlet UITextField * birth;
@property (weak) IBOutlet UIButton * entrar;
@property (weak) IBOutlet UIDatePicker * data;
@property (strong, nonatomic) NSDate *dateOfBirth;
@property (strong, nonatomic) NSDateFormatter * dateFormatter;
@property (strong, nonatomic) NSString * etiqueta;
@property (strong, nonatomic) NSString * eti;
@property (strong, nonatomic) NSString * dates;
-(id) initWithBirth: (NSDate *) dateOfBirth;
-(IBAction) displayDate: (id) sender;
@end
Login.m
#import "Login.h"
@interface Login()
@end
@implementation Login
-(void) viewdDidLoad{
[super viewDidLoad];
_eti=@"";
self.label.text=self.eti;
_etiqueta = @"Introdueix el teu nom d'usuari, la contrasenya, i la teva data de naixement";
self.label.text = self.etiqueta;
self.data = [[UIDatePicker alloc] init];
[_data setDate:[NSDate date]];
[self.data addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];
[self.birth setInputView:_data];
self.data.datePickerMode = UIDatePickerModeDate;
self.data.hidden = NO;
self.data.date = [NSDate date];
self.dateFormatter = [[NSDateFormatter alloc] init];
self.dateFormatter.dateStyle = NSDateFormatterLongStyle;
[self.view addSubview:self.data];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
NSDate * now = [NSDate date];
[_data setDate:now animated:YES];
_birth.text = [now description];
[self.dateFormatter stringFromDate: _dateOfBirth];
}
-(void)datePickerDidChangeDate:(id)sender
{
NSLog(@"%@",self.data.date);
self.birth.text=[NSString stringWithFormat:@"%@",self.data.date.description];
}
-(NSString *)formatDate:(NSDate *) date
{
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle: NSDateFormatterShortStyle];
[dateFormatter setDateFormat:@"MM'/'dd'/'yyyy"];
NSString * formattedDate = [dateFormatter stringFromDate: date];
return formattedDate;
//NSDate *yesterdaydate=[NSDate dateWithTimeIntervalSinceNow:obj];
}
-(void)dismissKeyboard {
[_username resignFirstResponder];
[_password resignFirstResponder];
[_birth resignFirstResponder];
}
-(id) initWithBirth:(NSDate *)dateOfBirth
{
if (self = [super init]){
_dateOfBirth = dateOfBirth;
}
return self;
}
-(IBAction) displayDate:(id)sender{
NSDate * selected = [_data date];
NSString * dates = [selected description];
_birth.text = dates;
}
-(IBAction) selector:(id)sender
{
if (_username.text.length == 0 || _password.text.length == 0 || _birth.text.length == 0)
{
[[[UIAlertView alloc] initWithTitle:@"Alerta!"
message:@"Algun camp està buit!"
delegate: nil
cancelButtonTitle:@"Cancelar"
otherButtonTitles:nil
] show];
}
else{
[self performSegueWithIdentifier: @"Menu" sender:self];
}
}
@结束
谁能帮我弄清楚如何解决这个问题?
编辑:另外,我想知道如何编写一个“if”方法来检查输入的日期是否早于今天,即您输入的是 5 月 9 日而不是 5 月 8 日。
类似于“如果日期
非常感谢。
【问题讨论】:
-
你没有初始化你的日期选择器...
-
尝试删除
UILabel *label; UIDatePicker *data;这一行并将所有“data”更改为_data。看来您使用的是未初始化的变量而不是您的实际日期选择器。
标签: ios datepicker uitextfield