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";
}

最初の応答者を辞任することは機能し、日付を印刷すると月が表示されるため、唯一の問題は月のラベルがないことです。

ストーリーボードを使用してこのプロジェクトを作成し、このプロジェクトでもコア日付を使用しています。ただし、このビュー コントローラーのコア データ部分はまだ実装されていません。

何か案は?

4

1 に答える 1

0

そのため、コードをさらに調べたところ、問題は UIPickerView 用に作成したカテゴリであることがわかりました。

別のファイルでは、UIPickerView の drawrect: メソッドをオーバーライドするカテゴリを使用して、カスタム ピッカー ビューを作成しました。オーバーライドされたメソッドでは、実際に一部のビューを UIPickerView の非表示に設定しました。カテゴリは他のファイルにのみインポートされましたが、UIDatePickerView にはカテゴリ オーバーライド メソッドが使用されていたため、最初のコンポーネントが非表示に設定されていました。

私の簡単な修正は、他のファイルの特別なピッカーの UIPickerView を単純にサブクラス化し、そこでカスタム drawRect オーバーライドを分離することでした。これを行った後、UIDatePicker が正しく表示されました。

于 2012-07-18T21:13:32.273 に答える