【问题标题】:UIPickerView pickerView:titleForRow:rowforComponent method not calledUIPickerView pickerView:titleForRow:rowforComponent 方法未调用
【发布时间】:2014-11-03 11:52:16
【问题描述】:

我的故事板中有一个 UIPickerView。 包含它的 UIViewController 设置了接口声明

@interface ContactDetail : UIViewController <ABPeoplePickerNavigationControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate,UIAlertViewDelegate, UITextFieldDelegate>

关于视图加载,pickerview 委托集

pickerView_RelationshipType.dataSource=self;
pickerView_RelationshipType.delegate = self;
pickerView_RelationshipType.showsSelectionIndicator = YES;

所有 UIPickerView 数据源和委托方法都被触发,除了那些 2

pickerView:titleForRow:rowforComponent
and
pickerView:viewForRow:forComponent:reusingView

下面的都调用了,没问题

    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component
    - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component

【问题讨论】:

  • 感谢 iBhavin 和 JAL。我已经意识到我的 dataSource 从 coreData 返回 nil。问题解决了

标签: ios objective-c uipickerview uipickerviewdatasource uipickerviewdelegate


【解决方案1】:

numberOfComponentsInPickerView 中有什么内容?

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

【讨论】:

    【解决方案2】:

    确保您的数据源数组已分配和初始化。当一切都正确连接时,我遇到了这个问题(我设置了数据源和委托并且符合协议),但是我忘记在向它们添加对象之前初始化我的数据源数组。我的代码达到了numberOfComponentsInPickerViewnumberOfRowsInComponent 而不是titleForRow,我不知道为什么。确保您的数据源没有返回 nil。

    有点愚蠢的边缘案例,但我想我会添加我的答案,以防其他人遇到同样的问题。

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2019-09-01
      相关资源
      最近更新 更多