0

我正在实现一个表格视图,其中对于一个特定的表格视图单元格,有一个文本字段,其第一响应者需要是 UIDatePicker。我已经能够实现其中的大部分,但由于某种原因,视图看起来并不完全正确。我一直在这个问题上停留了一段时间,我一直在寻找这个答案以寻求帮助。

UItableView 中的 UItextfield 中的 UIDatepicker

到目前为止,我的数据选择器正常显示和消失,文本字段的委托工作正常,并且可以更新文本字段。我的问题是由于某种原因缺少日期选择器的月份组件(我有一张图片,但由于我的代表少于 10 个,我无法发布它)。它看起来像一个典型的 UIDatePicker,但第一个有月份的组件是完全空的,不能滚动。日和年组件正常运行。

这就是我创建选择器视图的方式

    cell = [tableView dequeueReusableCellWithIdentifier:InfoIdentifier];
    UILabel *textLabel = (UILabel *)[cell viewWithTag:kInfoLabelTag];
    UITextFieldWithIndex *cellText = (UITextFieldWithIndex *)[cell viewWithTag:kInfoTextboxTag];
    cellText.indexPath = indexPath;

    textLabel.text = @"Birthday";

    UIDatePicker *datePicker = [[UIDatePicker alloc] init];
    datePicker.datePickerMode = UIDatePickerModeDate;
    [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
    datePicker.tag = indexPath.row;

    cellText.inputView = datePicker;

这是回调方法

-(void)datePickerValueChanged:(id)sender {
NSLog(@"Date Changing");
currentTextField.text = @"new date";
}

辞职第一响应者有效,如果我打印日期,月份就存在,所以唯一的问题是月份标签丢失。

我使用 Storyboards 创建了这个项目,我也在这个项目中使用了核心日期。然而,这个视图控制器的核心数据部分还没有实现。

有任何想法吗?

4

1 回答 1

0

因此,在查看了我的代码之后,我发现问题出在我为 UIPickerView 创建的一个类别上。

在另一个文件中,我通过使用一个类别来覆盖 UIPickerView 的 drawrect: 方法创建了一个自定义选择器视图。在覆盖的方法中,我实际上为 UIPickerView 将一些视图设置为隐藏。尽管仅在另一个文件中导入了类别,但 UIDatePickerView 使用了类别覆盖方法,因此将第一个组件设置为隐藏。

我的快速解决方法是简单地将 UIPickerView 子类化为我在另一个文件中的特殊选择器,从而隔离那里的自定义 drawRect 覆盖。完成此操作后,我的 UIDatePicker 正确显示!

于 2012-07-18T21:13:32.273 回答