0

ピッカーで現在選択されているコンテンツを表示するためのUIPickerViewとを含むカスタムビューを作成しました。UITableViewCell私はピッカーのとのPickerViewController両方として設定されており、、、、およびを実装しましたが、プログラムの実行時にピッカーが空白で表示され、メソッドに呼び出しを行ったおかげで、メソッドが呼び出されないことがわかりました。ピッカーは。と正しくリンクされているように見えるため、問題が何であるかわかりません。delegatedataSourcenumberOfComponentsInPickerView:pickerView: numberOfRowsInComponent:pickerView: titleForRow: forComponent:NSLogPickerViewController

私が達成しようとしている基本的な機能については、iOSカレンダーアプリの「開始と終了」ビューを見てください。私はこれを正確に模倣しようとしていますが、3つでUITableViewCellはなく1つしか使用していません。

PickerViewController.h

#import <UIKit/UIKit.h>

@interface PickerViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITableViewCell *pickerSelection;
// Property to dynamically determine what content to display in the picker.
@property (nonatomic) BOOL userIsChoosingClass;

@end

viewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(self.thePicker.delegate.description);
    if (self.userIsChoosingClass) {
        self.pickerSelection.textLabel.text = @"Class";
    } else {
        self.pickerSelection.textLabel.text = @"Major";
    }
}

ピッカービューのデータソースメソッド

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
    size_t numberOfRows = 0;

    if (self.userIsChoosingClass) {
        numberOfRows = [self.brain classChoicesForSignUp].count;
    } else {
        numberOfRows = [self.brain majorChoicesForSignUp].count;
    }

    return numberOfRows;
}

ピッカービューデリゲートメソッド

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
            forComponent:(NSInteger)component {
    NSLog(@"Picker view delegate method called");
    NSString *title;

    if (self.userIsChoosingClass) {
        title = [[self.brain classChoicesForSignUp] objectAtIndex:row];
    } else {
        title = [self.majorChoices objectAtIndex:row];
    }

    return title;
}
4

1 に答える 1

2

numberOfRows ...データソースメソッドが0を返す場合、デリゲートメソッドが呼び出されることはありません。ピッカーは、表示する行がないと判断した場合、行のタイトルを要求しません。

于 2012-06-11T17:21:12.500 に答える