objective-c - 未调用 UIPickerViewDelegate 方法

标签 objective-c ios uitableview uipickerview uipickerviewcontroller

我创建了一个自定义 View ,其中包含一个 UIPickerView 和一个 UITableViewCell 以显示当前在选择器中选择的内容。我的 PickerViewController 被设置为选择器的 delegatedataSource,并且我已经实现了 numberOfComponentsInPickerView:, pickerView: numberOfRowsInComponent:pickerView: titleForRow: forComponent:,但程序运行时选择器显示为空白,这要归功于 NSLog 调用在方法中,我发现这些方法永远不会被调用。我不知道问题出在哪里,因为选择器似乎与 PickerViewController 正确链接。

对于我试图实现的基本功能,请查看 iOS 日历应用程序中的“开始和结束” View 。我试图完全模仿这一点,但只使用一个 UITableViewCell 而不是三个。

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

选择器 View 数据源方法

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

选择器 View 委托(delegate)方法

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

最佳答案

如果您的 numberOfRows... 数据源方法返回 0,那么您的委托(delegate)方法将永远不会被调用 - 如果选择器认为没有任何行要显示,则它不会询问行的标题。

关于objective-c - 未调用 UIPickerViewDelegate 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955323/

相关文章:

objective-c - iOS 的自定义滑动方法?

iphone - 简单的 UITapGestureRecognizer。 IBAction 未触发

objective-c - 我在 NSArray 和 NSMutableArray 之间的兼容性方面遇到了问题?

ios - 从 UIwebview 打开并安装 iOS 应用程序

javascript - 调用phonegap摄像头功能后出现空白

ios - 如何使用 UIImage 从 tableview 单元格中的 url 平滑滚动

ios - 使用标签来检测是否有东西被窃听

objective-c - 为 iOS 构建静态 Graphviz 库

ios - 自定义 UIView 类约束取决于 ParentView

iphone - UIImage encodeWithCoder 识别选择器?