UIPickerView と UIToolbar を使用しており、それを UIView に追加し、このビューをメイン ビューに追加しています。
addTimePicker=[[UIPickerView alloc]init];
[addTimePicker setFrame: CGRectMake(0, 20, 0, 0)];
addTimePicker.showsSelectionIndicator=YES;
addTimePicker.dataSource=self;
addTimePicker.delegate=self;
picker= [[UIView alloc] initWithFrame:CGRectMake(0, screenHeight/2+35, screenWidth, screenHeight/2+35)];
picker.backgroundColor=[UIColor whiteColor];
addToolbar=[[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 45)];
addToolbar.barTintColor=[UIColor whiteColor];
addToolbar.items = [NSArray arrayWithObjects:flexibleSpace,addAvailabilityButton, nil];
[picker addSubview: addTimePicker];
[picker addSubview: addToolbar];
[self.view addSubview:picker];
ただし、コントローラーを UIPickerViewDataSource および UIPickerViewDelegate プロトコルに準拠するように構成したにもかかわらず、私の
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
また
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
また
-(NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component
全く呼ばれません。
少し調べてみましたが、これが呼び出されない理由が見つからないようです。
numberOfRowsInComponent が呼び出されるたびにデフォルトの 3 を返し、numberOfComponentsInPickerView の場合は 5 を返しますが、データをログに記録すると、チェックしたコンポーネントの行が 0 であると表示されます。
新しいプロジェクトを使用してこのコードをテストしたところ、すべてのデータを表示するチャームのように機能します。
EDIT : さらにテストして、これがシーンです。
血まみれのUIDatePickerでさえ機能しません。日付ピッカーが持つべき要素が見えません。日付ピッカーをそのまま新しいビューに投げたり、自分のビューに接続したりしてみました。
特にこの 1 つのプロジェクトにのみ影響するため、これが世界的な問題なのかどうか疑問に思い始めています。