UIPickerView 在 iOS 7 中不显示数据

Posted

技术标签:

【中文标题】UIPickerView 在 iOS 7 中不显示数据【英文标题】:UIPickerView does not display data in iOS 7 【发布时间】:2014-08-27 21:58:37 【问题描述】:

我正在使用 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 行。

我使用一个新项目测试了这段代码,它就像一个显示所有数据的魅力。

编辑:更多测试,这就是场景;

即使是该死的 UIDatePicker 也不起作用。我看不到 datepicker 应该具有的任何元素。我尝试简单地将日期选择器按原样扔到一个新视图上,然后通过将其连接到我的视图等来完成。

我开始怀疑这是否是一个全球性问题,因为它只特别影响这个项目。

【问题讨论】:

您是否忘记了您的@interface<UIPickerViewDelegate, UIPickerViewDataSource> 我没有。它调用 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 和 -(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component 和 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component方法。但是 numberOfRowsInComponent 总是最终返回 0,或者看起来是这样。 【参考方案1】:

找出问题所在。

我使用了一个空的数据集处理程序https://github.com/dzenbot/DZNEmptyDataSet,它也试图处理选择器。删除此处理程序解决了我的问题。

我已经吸取了教训,而且我学得很好。 3rd 方库是一场豪赌。

干杯。

【讨论】:

以上是关于UIPickerView 在 iOS 7 中不显示数据的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerView 在 UIView 中不显示添加的子视图

如何在iOS 7下更改UIPickerView中文本的颜色?

iOS 7 用 UIPickerView 打开 UITableViewController 很慢

标签在 iOS 6 中显示文本,但在 iOS 7 中不显示

在 iOS 7 中重用 UIPickerView 中的视图

如何在iOS 7中更改UIPickerView中的文本字体?