2014-05-09 5 views
0

3 개의 텍스트 필드와 UIDatePicker가있는 iOS 앱에서 작업하고 있습니다.iOS DatePicker 데이터를 텍스트 필드

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]; 
    [email protected]""; 
    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]; 

    } 

} 

@end

사람이 나를 어떻게 알아낼 수 있습니다 : 여기

내 파일입니다 나는 풀 수있다. 이 문제?

EDIT : 입력 된 날짜가 오늘 날짜가 아니라는 것을 확인하는 "if"메소드를 어떻게 프로그램 할 수 있는지 알고 싶습니다. 즉, 5 월 9 일이 아닌 5 월 8 일을 입력했습니다. .

"오늘은 < 일 경우"와 같은 것입니다.

대단히 감사합니다.

+0

가능한 중복 http://stackoverflow.com/questions/11197855/iphone- display-date-picker-on-textfield-click) – codercat

+0

날짜 선택 도구를 초기화하지 않습니다 ... – karthikeyan

+0

'UILabel * label; UIDatePicker * data;'이 줄과 모든''data''를'_data '로 변경합니다. 실제 날짜 선택 도구 대신 초기화되지 않은 변수를 사용하는 것 같습니다. – ujell

답변

1

가있는 viewDidLoad 방법이 시도

self.pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 250, 325, 300)]; 
      [self.pickerView addTarget:self action:@selector(datePickerDidChangeDate:) forControlEvents:UIControlEventValueChanged]; 
      self.pickerView.datePickerMode = UIDatePickerModeDate; 
      self.pickerView.hidden = NO; 
      self.pickerView.date = [NSDate date]; 
      self.formatter = [[NSDateFormatter alloc] init]; 
      self.formatter.dateStyle = NSDateFormatterLongStyle; 
      [self.view addSubview:self.pickerView]; 

-(void)datePickerDidChangeDate:(id)sender 
{ 
    NSLog(@"%@",self.pickerView.date); 
    self.textField.text=[NSString stringWithFormat:@"%@",self.pickerView.date.description]; } 
[텍스트 필드 클릭에 아이폰 디스플레이 날짜 선택] (의
+0

통찰력을 가져 주셔서 감사합니다. 아직 많이 기여하지 않는 것 같습니다. 나는 날짜 선택 도구를 클릭하지만 반응을 보이지 않고 정보를 텍스트 필드로 옮기지 않습니다. – user3082271

+0

나는 당신의 텍스트 필드에 문제가 있다고 생각합니다. – karthikeyan

+0

최근 편집은 저에게 답을 주셨습니다 : 이제 작동합니다! 당신의 도움을 주셔서 대단히 감사합니다. – user3082271

1

viewDidLoad에 "데이터"가 있는데이 개체의 초기화가 표시되지 않습니다. displaydate:은 텍스트 필드를 업데이트해야하나요? 다시 "데이터"가 있습니다. 나는 그것이 어디에서 왔는지 알 수 없습니다. 당신이 정의한 글로벌이라고 생각합니까? 너는 그렇게해서는 안된다. 당신은 설명을 사용합니다. 당신도 그렇게해서는 안됩니다. 워드 프로세서 :

(설명의 방법) 표현만을 디버그에

토론.

가 포함 날짜 에 대한 형식화 된 문자열 인수 할 수있는 옵션의 숫자입니다 : 날짜 포맷터가 (NSDateFormatter 및 데이터 포맷 안내서 참조)하고있는 NSDate의 방법 :, dateWithCalendarFormat descriptionWithLocale : timeZone가 : 및 descriptionWithCalendarFormat를 : timeZone : 로캘 :

날짜의 문자열 표현을 얻으려면 [self.dateFormatter stringFromDate:]을 사용해야합니다. 그리고 여러분이 getter와 setter를 얻은 속성을 사용한다면, 그것들을 사용하면 개발 프로세스를 간소화 할 수 있습니다. 예를 들어 date 속성의 setter에서 텍스트 필드를 업데이트 할 수 있습니다. 더 많은 설명을 요청하십시오.

관련 문제