2013-05-09 4 views
0

2 개의 텍스트 입력란과 1 개의 버튼이 있습니다. 나는 입력 한 텍스트 필드를 사용했지만 날짜 선택 도구를 사용해야합니다.텍스트 필드 대신 날짜 선택 도구를 사용하는 방법은 무엇입니까?

이 코드는 텍스트 필드에 날짜를 입력하고 일부 필드를 라벨에 표시합니다.이 코드 대신 날짜 선택기를 어떻게 변경합니까?

ViewController.h

@interface ViewController : UIViewController <NSXMLParserDelegate> 

- (IBAction)Send:(UIButton *)sender; 
@property (unsafe_unretained, nonatomic) IBOutlet UITextField *Date1; 
@property (unsafe_unretained, nonatomic) IBOutlet UITextField *Date2; 
//will here define for date picker 
@end 

ViewController.m

@interface ViewController(){ 
NSMutableData *webData; 
NSXMLParser *xmlParser; 
NSMutableString *returnSOAP; 
BOOL tReturn; 


    } 
@end 
@implementation ViewController 
@synthesize Date1,Date2; 

- (IBAction)Send:(UIButton *)sender{ 

    NSString *msgSOAP= [NSString stringWithFormat:@"<?xml version=\"1.0\" 
    encoding=\"utf-8\"?>\n" 
        "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema- 
      instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" 
      xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" 
        "<soap:Body>\n" 
        "<ShowDetails xmlns=\"http://tempuri.org/\">\n" 
        "<date1>%@</date1>\n" 
        "<date2>%@</date2>\n" 

        "</ShowDetails>\n" 
        "</soap:Body>\n" 
        "</soap:Envelope>\n",Date1.text,Date2.text]; 


    NSLog(@"SOAP Resulr = \n%@\n\n", msgSOAP); 

NSURL *url = [NSURL URLWithString:@"http://webservice/service.asmx"]; 

    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];  
    NSString *dnMsg = [NSString stringWithFormat:@"%d", [msgSOAP length]]; 

[theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[theRequest addValue: @"http://tempuri.org/ShowDetails" 
forHTTPHeaderField:@"SOAPAction"]; 
[theRequest dnMsg forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setHTTPBody:[msgSOAP dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:theRequest 
delegate:self]; 

if(con){ 
    webData = [NSMutableData data]; 
}else{ 
    NSLog(@"Connection Error."); 
} 
} 

감사합니다

+0

당신이 당신의 날짜에 원하는 형식은 무엇입니까? datePicker를 표시하려면 textField의 inputView 및 inputAccessoryView를 사용해야합니다. 날짜를 선택하고 dateFormatter를 사용하여 변환 한 다음 textField의 텍스트로 설정하십시오. – Anupdas

답변

0

난 당신이 날짜 선택기를 사용하려면 수정 얻고 경우 그래서 해당 사용자가 정확한 날짜를 입력하면 입력 한 날짜의 유효성을 확인할 필요가 없습니다.

textField의 inputView를 사용할 수 있습니다. inputAccessoryView를 사용하여 inputView를 닫을 수있는 버튼을 넣을 수있는 다른 뷰를 화면에 표시합니다.

@interface ViewController() 
{ 
    UIDatePicker *_datePicker; 
    UIToolbar *_pickerToolBar; 

    UITextField *_activeTextField; 

    NSDateFormatter *_dateFormatter; 
} 

@end 

@implementation ViewController 

- (void)addInputViewToTextField:(UITextField *)textField{ 

    if (!_datePicker) { 
     _datePicker = [[UIDatePicker alloc]init]; 
     [_datePicker setDatePickerMode:UIDatePickerModeDate]; 
     [_datePicker setDate:[NSDate date]]; 
    } 

    textField.inputView = _datePicker; 

    if (!_pickerToolBar) { 
     _pickerToolBar =[[UIToolbar alloc]initWithFrame:CGRectMake(0,0, self.view.frame.size.width,44)]; 
     _pickerToolBar.barStyle =UIBarStyleBlackOpaque; 

     UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                        target:self 
                        action:@selector(cancelButtonPressed:)]; 

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

     UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                        target:self 
                        action:@selector(doneButtonPressed:)]; 
     [_pickerToolBar setItems:@[cancelButton,flexibleSpace, doneButton]]; 
    } 


    textField.inputAccessoryView = _pickerToolBar; 

} 

- (void)doneButtonPressed:(id)sender{ 

    if (!_dateFormatter) { 
     _dateFormatter = [NSDateFormatter new]; 
     [_dateFormatter setDateFormat:@"dd.MM.yyyy"]; 
    } 

    _activeTextField.text = [_dateFormatter stringFromDate:_datePicker.date]; 
    [_activeTextField resignFirstResponder]; 

} 

- (void)cancelButtonPressed:(id)sender{ 
    [_activeTextField resignFirstResponder]; 
} 

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    _activeTextField = textField; 
    [self addInputViewToTextField:textField]; 
} 
- (void)textFieldDidEndEditing:(UITextField *)textField{ 
    _activeTextField = nil; 
} 

Source Code

+0

감사합니다. 감사합니다. 감사합니다 .2111.2012와 같이 날짜 형식을 어떻게 바꿀 수 있습니까? – Mhmt

+0

@MehmetAkyel 유용하다는 것을 알고 계셔서 감사합니다. 나는 일반적인 것을 사용하여 dateFormat을 몰랐다. '[_dateFormatter setDateFormat : @ "dd.MM.yyyy"]', 대신 dateStyle 및 timeStyle. 받아들이는 것을 잊지 마세요) – Anupdas

+0

웹 servis에서 전화를 걸기위한 날짜 필드를 입력했습니다. 웹 서비스 호출 필드의 날짜 형식은 21.12.2012입니다. – Mhmt

0

사용이

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    //Check the textfield for which you want to display date picker 
    if(textField == datePickerTextField) 
    { 
     [self showDatePicker]; 
     return NO; //to disallow editing i.e it will not open keyboard 
    } 
} 
+0

답변 해 주셔서 감사합니다하지만 내 질문을 이해하지 못했다고 생각합니다 – Mhmt

관련 문제