2012-11-17 2 views
0

저는 ios 개발에 익숙하며 날짜 선택 도구에서 날짜를 가져 오는 두 개의 텍스트 필드를 설정하는 방법을 알아야합니다.datepicker 및 textfields

.H 파일

#import <UIKit/UIKit.h> 

@interface DatePickerForTermins : UIViewController<UITextFieldDelegate> 
{ 
    //NSDate *frmDate; 
    UIActionSheet *dateSheet; 
    UIActionSheet *dateSheet2; 





} 

@property (weak, nonatomic) IBOutlet UITextField *fromDateTextField; 
@property (weak, nonatomic) IBOutlet UITextField *toDateTextField; 

@property (weak, nonatomic) IBOutlet UILabel *chosenFromDateLabel; 
@property (weak, nonatomic) IBOutlet UILabel *chosenToDateLabel; 

@property (weak, nonatomic) NSDate *frmDate; 
@property (weak, nonatomic) NSDate *toDate; 

-(void)setDateFRM; 
-(void)dismissDateSet; 
-(void)cancelDateSet; 
-(void)setDateTO; 
-(void)dismissDateSet2; 
-(void)cancelDateSet2; 
@end 

와하는 .m 파일 :

#import "DatePickerForTermins.h" 

@interface DatePickerForTermins() 

@end 

@implementation DatePickerForTermins 
@synthesize fromDateTextField; 
@synthesize chosenFromDateLabel; 
@synthesize frmDate; 
@synthesize chosenToDateLabel; 
@synthesize toDateTextField; 
@synthesize toDate; 




- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

-(void)setDateFRM 
{ 

    dateSheet=[[UIActionSheet alloc]initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
    [dateSheet setActionSheetStyle:UIActionSheetStyleDefault]; 

    CGRect pickerFrame=CGRectMake(0, 44, 0, 0); 
    UIDatePicker *frmDatePicker=[[UIDatePicker alloc]initWithFrame:pickerFrame]; 
    [frmDatePicker setDatePickerMode:UIDatePickerModeDate]; 
    [dateSheet addSubview:frmDatePicker]; 
    UIToolbar *controlToolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, dateSheet.bounds.size.width, 44)]; 

    [controlToolBar setBarStyle:UIBarStyleDefault]; 
    [controlToolBar sizeToFit]; 

    UIBarButtonItem *spacer=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 


    UIBarButtonItem *setButton=[[UIBarButtonItem alloc]initWithTitle:@"Set Date" style:UIBarButtonItemStyleDone target:self action:@selector(dismissDateSet)]; 


    UIBarButtonItem *cancelButton=[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelDateSet)]; 



    [controlToolBar setItems:[NSArray arrayWithObjects:spacer,cancelButton,setButton, nil]animated:NO]; 

    [dateSheet addSubview:controlToolBar]; 

    [dateSheet showInView:self.view]; 

    [dateSheet setBounds:CGRectMake(0, 0, 320, 425)]; 

} 
-(void)setDateTO 
{ 

    dateSheet2=[[UIActionSheet alloc]initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
    [dateSheet2 setActionSheetStyle:UIActionSheetStyleDefault]; 

    CGRect pickerFrame=CGRectMake(0, 44, 0, 0); 
    UIDatePicker *frmDatePicker=[[UIDatePicker alloc]initWithFrame:pickerFrame]; 
    [frmDatePicker setDatePickerMode:UIDatePickerModeDate]; 
    [dateSheet2 addSubview:frmDatePicker]; 
    UIToolbar *controlToolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, dateSheet2.bounds.size.width, 44)]; 

    [controlToolBar setBarStyle:UIBarStyleDefault]; 
    [controlToolBar sizeToFit]; 

    UIBarButtonItem *spacer=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 


    UIBarButtonItem *setButton=[[UIBarButtonItem alloc]initWithTitle:@"Set Date" style:UIBarButtonItemStyleDone target:self action:@selector(dismissDateSet2)]; 


    UIBarButtonItem *cancelButton=[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelDateSet2)]; 



    [controlToolBar setItems:[NSArray arrayWithObjects:spacer,cancelButton,setButton, nil]animated:NO]; 

    [dateSheet2 addSubview:controlToolBar]; 

    [dateSheet2 showInView:self.view]; 

    [dateSheet2 setBounds:CGRectMake(0, 0, 320, 425)]; 

} 
-(void)cancelDateSet 
{ 
    [dateSheet dismissWithClickedButtonIndex:0 animated:YES]; 

} 
-(void)cancelDateSet2 
{ 
    [dateSheet2 dismissWithClickedButtonIndex:0 animated:YES]; 

} 

-(void)dismissDateSet 
{ 
    NSArray *listOfSubviews=[dateSheet subviews]; 
    for (NSString *sre in listOfSubviews) { 
     NSLog(@"Lista Sub:%@",sre); 
    } 


    for (UIView *subView in listOfSubviews) { 
     if([subView isKindOfClass:[UIDatePicker class]]){ 

      self.frmDate=[(UIDatePicker*)subView date]; 

     } 
    } 
    NSDateFormatter *dateFormater=[[NSDateFormatter alloc]init]; 
    [dateFormater setDateFormat:@"dd/MM/yyyy"]; 
    [fromDateTextField setText:[dateFormater stringFromDate:self.frmDate]]; 


    // NSCalendar *calendar=[NSCalendar currentCalendar]; 
    // unsigned unitFlags= NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
    // NSDateComponents 

    NSString *outputStr=[NSString stringWithFormat:@"From Datum je:%@",self.frmDate]; 



    [self.chosenFromDateLabel setText:outputStr]; 


    [dateSheet dismissWithClickedButtonIndex:0 animated:YES]; 



} 

-(void)dismissDateSet2 
{ 
    NSArray *listOfSubviews=[dateSheet2 subviews]; 
    for (NSString *sre in listOfSubviews) { 
     NSLog(@"Lista Sub2:%@",sre); 
    } 

    for (UIView *subView in listOfSubviews) { 
     if([subView isKindOfClass:[UIDatePicker class]]){ 

      self.toDate=[(UIDatePicker*)subView date]; 

    } 
} 
    NSDateFormatter *dateFormater=[[NSDateFormatter alloc]init]; 
    [dateFormater setDateFormat:@"dd/MM/yyyy"]; 
    [toDateTextField setText:[dateFormater stringFromDate:self.toDate]]; 


// NSCalendar *calendar=[NSCalendar currentCalendar]; 
// unsigned unitFlags= NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
// NSDateComponents 

    NSString *outputStr=[NSString stringWithFormat:@"From Datum je:%@",self.frmDate]; 



    [self.chosenToDateLabel setText:outputStr]; 


    [dateSheet2 dismissWithClickedButtonIndex:0 animated:YES]; 



} 




-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 


     [self setDateFRM]; 
     return NO; 





} 

@end 

다른 텍스트 필드 그냥 대신 날짜 선택기의 일반 키보드를 제공 여기에 코드입니다. 아무도 이것을 어떻게 수행 할 수 있는지 아니?

답변

0

날짜가 변경되면 "addTarget"을 사용하여 메시지를 가져옵니다.

예 :

[rmDatePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged|; 
... 

-(void) datePickerValueChanged:(id) sender { 
    UIDatePicker *picker = (UIDatePicker*)sender; 
    NSDate dateFromPicker = picker.date; 
    fromDateTextField.text = [dateFromPicker description]; 
} 

더 많은 정보를 정기적으로 : 대답에 대한 Target-Action in UIKit

+0

감사합니다,하지만 당신은 다음과 같은 나에게 말할 수 : 나는 당신이하고 싶은 것을 이해 확실하지 않다? 그리고 내가 이미 가장 좋은 방법으로 날짜를 정한 이후로 어떻게 도움이 될까요? – user1832270

관련 문제