2014-04-11 3 views
0

tableViewCell에서 dateTextField을 누르면 datePicker이 표시됩니다.
datePicker에서 날짜를 선택하십시오.
그러나 은 datePicker.date을 표시하지 않습니다.UITextField가 datePicker.date를 inputview로 표시하지 않습니다.

어떻게 수정합니까?

다음 코드가 있습니다.

tableViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString* CellIdentifier = @"Cell";  
    tableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if(cell == nil) 
    { 
     cell = [[tableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    NSDateFormatter* outputFormatter = [[NSDateFormatter alloc]init]; 
    [outputFormatter setDateFormat:@"HH:mm"]; 
    NSString* dateString = [outputFormatter stringFromDate:cell.datePicker.date]; 
    cell.dateTextField.text = dateString; 
    [cell.contentView addSubview:self.dateTextField]; 

    return cell; 
} 

tableViewCell.m

@property (nonatomic, retain) UITextField* dateTextField; 
@property (nonatomic, retain) UIDatePicker* datePicker; 
@property (nonatomic, retain) UIToolbar* toolBar; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self.datePicker = [[UIDatePicker alloc]init]; 
    self.datePicker.datePickerMode = UIDatePickerModeTime; 
    self.toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, -40, 320, 40)]; 
    self.toolBar.barStyle = UIBarStyleBlackOpaque; 
    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(textFieldShouldReturn:)]; 
    NSArray* barItems = [NSArray arrayWithObjects:doneButton, nil]; 
    [self.toolBar setItems:barItems animated:YES]; 

    self.dateTextField = [[UITextField alloc]initWithFrame:CGRectMake(90, 5, 100, 25)]; 
    self.dateTextField.delegate = self; 
    self.dateTextField.inputView = self.datePicker; 
    self.dateTextField.inputAccessoryView = self.toolBar; 
    [self.contentView addSubview:self.dateTextField]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [self.dateTextField resignFirstResponder]; 
    return YES; 
} 

감사합니다.

답변

0

코드가 명확하지 않습니다 (다른 중요한 부분이 누락 된 것 같습니다). 그러나이를 수행하는 적절한 방법은 사용자가 작업을 완료 한 후 날짜 선택기에서 날짜를 가져 오는 것입니다 (IBAction이 통지 함) , 그리고 사용자 정의 형식을 지정하고 textField의 문자열을 형식 문자열로 설정하십시오. 행운을 빕니다!

0

setText 메서드를 추가하여 해결했습니다.
고정 코드 :

@property (nonatomic, retain) UITextField* dateTextField; 
@property (nonatomic, retain) UIDatePicker* datePicker; 
@property (nonatomic, retain) UIToolbar* toolBar; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self.datePicker = [[UIDatePicker alloc]init]; 
    self.datePicker.datePickerMode = UIDatePickerModeTime; 
    self.toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, -40, 320, 40)]; 
    self.toolBar.barStyle = UIBarStyleBlackOpaque; 
    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(textFieldShouldReturn:)]; 
    NSArray* barItems = [NSArray arrayWithObjects:doneButton, nil]; 
    [self.toolBar setItems:barItems animated:YES]; 

    self.dateTextField = [[UITextField alloc]initWithFrame:CGRectMake(90, 5, 100, 25)]; 
    self.dateTextField.delegate = self; 
    self.dateTextField.inputView = self.datePicker; 
    self.dateTextField.inputAccessoryView = self.toolBar; 
    [self.contentView addSubview:self.dateTextField]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    NSDateFormatter* outputFormatter = [[NSDateFormatter alloc]init]; 
    [outputFormatter setDateFormat:@"HH:mm"]; 
    NSString* dateString = [outputFormatter stringFromDate:self.datePicker.date]; 
    [self.dateTextField setText:dateString]; 
    [self.dateTextField resignFirstResponder]; 
    return YES; 
} 
관련 문제